![]() |
|
Модераторы: gambit, Partizan |
![]()
|
|
| arkonst |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 54 Регистрация: 31.10.2007 Репутация: нет Всего: 1 |
Здравствуйте коллеги!
Подскажите пожалуйста, каким образом можно нарисовать что нибудь на контроле средствами GDI+ , так как у меня на форме будет присутствовать контрол tabPage, на нем и нужно кое чего накалякать, но при рисовании получается что рисунок ресуется на главной форме Form1? а на tabPage каким образом нарисовать???? |
|||
|
||||
| Softaz |
|
|||
![]() wasm ![]() ![]() Профиль Группа: Участник Сообщений: 373 Регистрация: 16.1.2006 Репутация: 3 Всего: 16 |
Код в студию!
-------------------- Разочарованный в .NET |
|||
|
||||
| informatik |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 207 Регистрация: 4.11.2007 Репутация: 2 Всего: 6 |
Graphics нужно создавать на том, на чем хочешь рисовать:
Это сообщение отредактировал(а) informatik - 18.2.2008, 13:17 --------------------
namespace informatik |
|||
|
||||
| arkonst |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 54 Регистрация: 31.10.2007 Репутация: нет Всего: 1 |
то есть нужно лезть в кусок кода где прописана инициализация tabPage и там уже колдовать???
|
|||
|
||||
| informatik |
|
||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 207 Регистрация: 4.11.2007 Репутация: 2 Всего: 6 |
Ну зачем же?? Можно просто вставить в событие Paint у нужной TabPage, нужный код: Пример:
--------------------
namespace informatik |
||||
|
|||||
| arkonst |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 54 Регистрация: 31.10.2007 Репутация: нет Всего: 1 |
ну а так я соответственно не правильно зделал??? так как почему -то не выводиться прямоуголник на tabPage, вместо этого он выводиться на главную форму...почему так происходит???
protected override void OnPaint(PaintEventArgs tabPage1) { Graphics dc = tabPage1.Graphics; Pen BlackPen = new Pen(Color.Black, 4); dc.DrawRectangle(BlackPen, 250, 150, 50, 50); base.OnPaint(tabPage1); } |
|||
|
||||
| informatik |
|
||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 207 Регистрация: 4.11.2007 Репутация: 2 Всего: 6 |
Да неправильно! Ты переопределил метод Paint главной формы, а не использовал событие Paint элемента tabPage и твой tabPage1 = это параметр формы, зачем ты его переименовал, непонятно.... (по умолчанию там e)...
А тебе нужно обратиться к методу Paint элемента tabPage1. Твой код:
будет работать в методе Paint который написал я:
т.е. в методе Paint элемента tabPage; Это сообщение отредактировал(а) informatik - 18.2.2008, 20:31 --------------------
namespace informatik |
||||
|
|||||
| arkonst |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 54 Регистрация: 31.10.2007 Репутация: нет Всего: 1 |
Informatik респект тебе.....очень помог ....спасибо......может ты знаешь каким образом можно можно сменять рисунок на другой.....например....мне нужно сделать что-то типа ключа......при 1 он замыкаеться...а при 0 размыкаеться....я так думаю нужно копать в направлении перерисовки?? я прав?
|
|||
|
||||
| Alekz |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 86 Регистрация: 5.2.2008 Где: Запорожье, Украин а Репутация: нет Всего: 2 |
Если надо сменить картинку просто вызови tabPage.Refresh() И обрати внимание: у объекта PaintEventArgs есть поле Graphics. Лучше использовать его. Это сообщение отредактировал(а) Alekz - 19.2.2008, 10:00 |
|||
|
||||
| arkonst |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 54 Регистрация: 31.10.2007 Репутация: нет Всего: 1 |
А как пользоваться этим методом Refresh()?????
|
|||
|
||||
| Alekz |
|
||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 86 Регистрация: 5.2.2008 Где: Запорожье, Украин а Репутация: нет Всего: 2 |
например:
|
||||
|
|||||
| arkonst |
|
||||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 54 Регистрация: 31.10.2007 Репутация: нет Всего: 1 |
это я понял....а каким образом именно по наступлению события ...приход еденицы например....можно сменить одну прорисовку на другую...?? я просто чего-то не понимаю....что за код должен следовать после вызова метода Refresh()??? |
||||||
|
|||||||
| Alekz |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 86 Регистрация: 5.2.2008 Где: Запорожье, Украин а Репутация: нет Всего: 2 |
Где-то в коде ты меняешь какие-то данные (выбираешь нужный тебе рисунок) и вызываешь Refresh() для нужного контрола.
Контрол сразу бросается перерисовываться. При этом он бросит событие Paint. В обработчике события просто и удобно нарисовать на контроле все, что ты хочешь. Например так:
|
|||
|
||||
| Yahhi |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 1 Регистрация: 6.3.2008 Репутация: нет Всего: нет |
Вопрос в принципе по этой же теме, но немного нестандартный. Есть два объекта-класса. Каждый из них как-то отображается на форме. Кружочком там, квадратиком, неважно.
Попробовала создать в каждом объекте свой метод перерисовки. В форме добавляю оба на событие paint:
Оба запускаются. Но второй отказывается рисовать. То есть
выдает в runtime на строке DrawLines буквально следующее: ArgumentException was unhandled. Недопустимый параметр. Получается нельзя использовать два обработчика события Paint? Это сообщение отредактировал(а) Yahhi - 6.3.2008, 22:46 |
||||
|
|||||
![]()
|
| Прежде чем создать тему, посмотрите сюда: | |
|
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Разработка Windows Forms | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |