Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > Общие вопросы .NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.12.2008, 03:04   #1
HunterMan
Пользователь
 
Регистрация: 01.04.2008
Сообщений: 58
По умолчанию Bitmap?

На WinAPI писал когда-то программу, которая работает с выводом различных графиков. При этом рисовал кривые в битмапе и с помощью функци BitBlt в обработке сообщения WM_PAINT выводил битмап на экран. Теперь это же хочу проделать в .НЕТ.

Как я понял основы рисования на битмапе не поменялись...
и выводить можно в обработке сообщения OnPaint.
Но появился элемент PictureBox, который дает некоторые преимущества, поскольку научили его реагировать на некоторые события.

Так вот у меня вопрос. С качественной точки зрения чем лучше воспользоватся??? Рисовать в контексте окна или на PictureBox'e? Что лучше и еффективнее?
HunterMan вне форума Ответить с цитированием
Старый 18.12.2008, 20:03   #2
Hollander
Участник клуба
 
Аватар для Hollander
 
Регистрация: 03.05.2007
Сообщений: 1,189
По умолчанию

Мне кажется, что разницы в механизме нету. Тут наверное дело в удобстве, т.к. канва - она одна и та же что на форме, что на pictureBox.
Hollander вне форума Ответить с цитированием
Старый 19.12.2008, 01:24   #3
Min
Форумчанин
 
Регистрация: 12.09.2008
Сообщений: 239
По умолчанию

на PictureBox прорисовка лучше..... она быстрее..... нету этого ненавистного мерцания......
Надо бы избавиться от привычки ставить многоточие.....
Min вне форума Ответить с цитированием
Старый 19.12.2008, 15:39   #4
HunterMan
Пользователь
 
Регистрация: 01.04.2008
Сообщений: 58
По умолчанию

А в чем механизм состоит? почему мерцания в PictureBox'e нету?

Ведь фактически PictureBox - то просто готовый элемент и я его могу повторить, написав код...
HunterMan вне форума Ответить с цитированием
Старый 19.12.2008, 17:24   #5
Hollander
Участник клуба
 
Аватар для Hollander
 
Регистрация: 03.05.2007
Сообщений: 1,189
По умолчанию

наверное дело в том, что picturebox оптимизирован для графики. А не думаю что Microsoft просто сделал пустой компонент, который как бы используется для прорисовки на канве.
Hollander вне форума Ответить с цитированием
Старый 19.12.2008, 21:40   #6
MaTBeu
Eclipse Foundation
Старожил
 
Аватар для MaTBeu
 
Регистрация: 19.09.2007
Сообщений: 2,604
По умолчанию

Наверное в PaintBox запихнули двойную буфферизацию. Тоесть нарисовалась одна картинка, а потом, когда нада ее изменить, то рисуется другая и просто накладывается сверху. В итоге никакого Repaint'a и экран не мерцает. А может этот компонент вообще с видеокартой работает напрямую
MaTBeu вне форума Ответить с цитированием
Старый 20.12.2008, 19:31   #7
HunterMan
Пользователь
 
Регистрация: 01.04.2008
Сообщений: 58
По умолчанию

Вот смотрите, если выводить в PictureBox'e, то не мигает и это и действительно как я разобрался связано с двойной буферизацией. Ну и еще как я понял, то для вывода в PictureBox используется внастоящем не GDI+, а WinApi или что-то немение быстрое.

Также нашел, что в С шарп можна свои контролы создавать. Там тоже есть функция двойной буферизации. Так я подумал: а если включить двойную буферизацию, Опасити поставить на 100% и рисовать на канве этого контрола. Будет ли это все также хорошо работать как и при выводе в PictureBOx.

П.С. Придется если, что то работать с PictureBox и вставлять на контрол... Сам по себе его юсать не хочу, бо в нем определена куча методов мне не нужных и по идее они могут притормаживать работу.
HunterMan вне форума Ответить с цитированием
Старый 27.12.2008, 19:02   #8
Min
Форумчанин
 
Регистрация: 12.09.2008
Сообщений: 239
По умолчанию

ну в основном мерцание идет от того, что в методе onPaint вы производите вычисления всякие и тд.... и при вызове метода он их заново делает, а в PictureBox все сохраняется растрово в BitMap и просто с него выводится.... плюс ко всему OnPaint вызывается даже когда он фактически не нужен..... при изменении размеров окна например если рисовать в форме и тд (тут и двойная буферизация не поможет избавиться от мерцания из-за просчетов, а при больших просчетах форма попросту будет зависать)...... а PictureBox просто локализирует этот метод только на определённый участок.
Надо бы избавиться от привычки ставить многоточие.....
Min вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Bitmap Is Vaild TaTT DoGG БД в Delphi 2 02.05.2008 04:05
Icon to Bitmap Altera Мультимедиа в Delphi 3 23.04.2008 15:15
Рисунок в BitMap-е Altera Мультимедиа в Delphi 3 11.03.2008 13:42
BitBtn и ее Bitmap Yogik™ Помощь студентам 2 19.11.2007 17:12
работа с Bitmap AlexandrL Мультимедиа в Delphi 2 16.04.2007 01:01