Модераторы: diadiavova, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Графика и проблема с прорисовкой 
V
    Опции темы
Vello
  Дата 25.7.2008, 14:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 15.7.2008

Репутация: нет
Всего: нет



У меня следующая проблема:
 Прога которая должна при нажатии кнопки: "нарисовать четырехугольник", "нарисовать треугольник", "нарисовать дугу" и ввода параметров высота и ширина отображать соответственные фигуры, в общем это получается. Но обьекты прорисовываются тупо в форме а мне нужно чтобы прорисовывалась в ImageBox. И еще при сворачивании, изменении размера окна изображения исчезают.

Я добавляю проект о котором говорю.

Что мне посоветуете делать?

P.S. smile  если есть возможность дайте пример кода графического ридактора

Присоединённый файл ( Кол-во скачиваний: 6 )
Присоединённый файл  Graphick_solutionTest.rar 133,96 Kb
PM MAIL   Вверх
Experimenter
Дата 31.7.2008, 18:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 430
Регистрация: 8.5.2007
Где: Уфа

Репутация: нет
Всего: 17



1) Про элемент ImageBox не слышал, есть PictureBox.
2) Чтобы объекты тупо рисовались в твоем контроле, а не в форме, нужно в контроле и рисовать.
3) Чтобы при сворачивании, изменении размера изображения не исчезали, прорисовку необходимо делать в событии Paint, а в обработчиках нажатия кнопок только лишь вызывать метод Invalidate (Refresh, Update, какой больше нравится). И все у тебя получится.
4) Проект твой не скачивал, т.к. твоя проблема давно известна.


--------------------
public Zlo FromTwoEvilsChooseSmaller(Zlo zlo1, Zlo zlo2){
    if(zlo1 < zlo2) return zlo1;
    else if(zlo1 > zlo2) return zlo2;
    else throw new Exception("Kill yourself by the wall"); }
PM WWW ICQ   Вверх
Vello
  Дата 1.8.2008, 21:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 15.7.2008

Репутация: нет
Всего: нет



Извени за тупой вопрос smile  , но как рисовать в PictureBox?
PM MAIL   Вверх
Experimenter
Дата 1.8.2008, 22:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 430
Регистрация: 8.5.2007
Где: Уфа

Репутация: нет
Всего: 17



Очевидно, добавив к нему обработчик события:
Код

AddHandler pictureBox1.Paint, AddressOf pictureBox1_Paint 'это в конструкторе

Private Sub pictureBox1_Paint(ByVal sender As Object, ByVal e As PaintEventArgs)
    If myString = "rectangle" Then
        e.Graphics.DrawRectangle(Pens.Red, 0, 0, 40, 20)
    End If
End Sub

Данный код работает не только для PictureBox, но и еще для многих контролов


--------------------
public Zlo FromTwoEvilsChooseSmaller(Zlo zlo1, Zlo zlo2){
    if(zlo1 < zlo2) return zlo1;
    else if(zlo1 > zlo2) return zlo2;
    else throw new Exception("Kill yourself by the wall"); }
PM WWW ICQ   Вверх
Vello
  Дата 2.8.2008, 13:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 15.7.2008

Репутация: нет
Всего: нет



В общем я понял это действие, но не могу взять в толк что за "конструктор"? smile 
PM MAIL   Вверх
Experimenter
Дата 2.8.2008, 13:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 430
Регистрация: 8.5.2007
Где: Уфа

Репутация: нет
Всего: 17



В случае с VB.NET - это процедура
Код

Shared Sub New()
...
End Sub
то место, где происходит инициализация твоих контролов.
Если ты создавал форму при помощи дизайнера, то, если не ошибаюсь,
должна быть эта процедура и в ней вызов метода InitializeComponents()
Вот после этого метода и вставляй AddHandler.
Хотя можно и проще: в окне студии, где твой код, на панели вверху есть два длинных комбобокса
В левом перечислены твои компоненты, выбирай свой пикчербокс,
в правом для него перечислены доступные события, выбирай Paint и... дальше сам увидишь.

Это сообщение отредактировал(а) Experimenter - 2.8.2008, 14:02


--------------------
public Zlo FromTwoEvilsChooseSmaller(Zlo zlo1, Zlo zlo2){
    if(zlo1 < zlo2) return zlo1;
    else if(zlo1 > zlo2) return zlo2;
    else throw new Exception("Kill yourself by the wall"); }
PM WWW ICQ   Вверх
Vello
Дата 4.8.2008, 11:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 15.7.2008

Репутация: нет
Всего: нет



Ага спасибо  smile 


-----------------------------------------------

А теперь возникает вопрос как инициировать событие pictureBox1.Paint ?

Это сообщение отредактировал(а) Vello - 4.8.2008, 13:26
PM MAIL   Вверх
Experimenter
Дата 4.8.2008, 14:58 (ссылка) |   (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 430
Регистрация: 8.5.2007
Где: Уфа

Репутация: нет
Всего: 17



Цитата(Experimenter @ 31.7.2008,  21:40)
3) Чтобы при сворачивании, изменении размера изображения не исчезали, прорисовку необходимо делать в событии Paint, а в обработчиках нажатия кнопок только лишь вызывать метод Invalidate (Refresh, Update, какой больше нравится). И все у тебя получится.

Прочти еще раз внимательно. Любой из вышеназванных методов вызовет перерисовку твоего контрола (событие Paint).
Код

pictureBox1.Update()
Работают они немного по-разному. Но в общем случае результат один и тот же.


--------------------
public Zlo FromTwoEvilsChooseSmaller(Zlo zlo1, Zlo zlo2){
    if(zlo1 < zlo2) return zlo1;
    else if(zlo1 > zlo2) return zlo2;
    else throw new Exception("Kill yourself by the wall"); }
PM WWW ICQ   Вверх
Vello
  Дата 5.8.2008, 12:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 15.7.2008

Репутация: нет
Всего: нет



Все спасибо еще раз, извините за не внимательность. Вопрос решен smile 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума VB .NET
diadiavova
  • Прежде чем задать вопрос, воспользуйтесь поиском: возможно Ваш вопрос уже обсуждался и на него был получен ответ.
  • Если такой же вопрос не найден, не стоит задавать свой вопрос в любую тему, создайте новую.
  • Заголовок темы должен отображать ее суть.
  • Содержание поста должно описывать проблему понятно, но в то же время, по возможности, лаконично. Сначала следует описать суть вопроса, потом можно привести пример кода, не вынуждайте других участников угадывать в чем Ваша проблема - телепатов здесь нет.
  • Будьте взаимно вежливы и дружелюбны.
  • При оформлении сообщений используйте форматирование, примеры кода заключайте в теги [CODE=vbnet][/CODE].
  • Также ознакомьтесь с общими правилами, действующими на всем форуме.
  • Если вопрос решен, не забывайте помечать тему решенной(вверху темы есть ссылка). Кроме того, если Вы хотите отблагодарить участников, оказавших помощь в решении, можно повысить им репутацию, в случае, если у Вас менее 100 сообщений в форуме и функция изменения репутации Вам недоступна, можете написать сюда.
  • Общие вопросы по программированию на платформе .NET обсуждаются здесь.
  • Литература по VB .NET обсуждается здесь.

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, diadiavova.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | VB .NET | Следующая тема »


 




[ Время генерации скрипта: 0.0726 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.