|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
18.12.2008, 03:04 | #1 |
Пользователь
Регистрация: 01.04.2008
Сообщений: 58
|
Bitmap?
На WinAPI писал когда-то программу, которая работает с выводом различных графиков. При этом рисовал кривые в битмапе и с помощью функци BitBlt в обработке сообщения WM_PAINT выводил битмап на экран. Теперь это же хочу проделать в .НЕТ.
Как я понял основы рисования на битмапе не поменялись... и выводить можно в обработке сообщения OnPaint. Но появился элемент PictureBox, который дает некоторые преимущества, поскольку научили его реагировать на некоторые события. Так вот у меня вопрос. С качественной точки зрения чем лучше воспользоватся??? Рисовать в контексте окна или на PictureBox'e? Что лучше и еффективнее? |
18.12.2008, 20:03 | #2 |
Участник клуба
Регистрация: 03.05.2007
Сообщений: 1,189
|
Мне кажется, что разницы в механизме нету. Тут наверное дело в удобстве, т.к. канва - она одна и та же что на форме, что на pictureBox.
|
19.12.2008, 01:24 | #3 |
Форумчанин
Регистрация: 12.09.2008
Сообщений: 239
|
на PictureBox прорисовка лучше..... она быстрее..... нету этого ненавистного мерцания......
Надо бы избавиться от привычки ставить многоточие.....
|
19.12.2008, 15:39 | #4 |
Пользователь
Регистрация: 01.04.2008
Сообщений: 58
|
А в чем механизм состоит? почему мерцания в PictureBox'e нету?
Ведь фактически PictureBox - то просто готовый элемент и я его могу повторить, написав код... |
19.12.2008, 17:24 | #5 |
Участник клуба
Регистрация: 03.05.2007
Сообщений: 1,189
|
наверное дело в том, что picturebox оптимизирован для графики. А не думаю что Microsoft просто сделал пустой компонент, который как бы используется для прорисовки на канве.
|
19.12.2008, 21:40 | #6 |
Eclipse Foundation
Старожил
Регистрация: 19.09.2007
Сообщений: 2,604
|
Наверное в PaintBox запихнули двойную буфферизацию. Тоесть нарисовалась одна картинка, а потом, когда нада ее изменить, то рисуется другая и просто накладывается сверху. В итоге никакого Repaint'a и экран не мерцает. А может этот компонент вообще с видеокартой работает напрямую
|
20.12.2008, 19:31 | #7 |
Пользователь
Регистрация: 01.04.2008
Сообщений: 58
|
Вот смотрите, если выводить в PictureBox'e, то не мигает и это и действительно как я разобрался связано с двойной буферизацией. Ну и еще как я понял, то для вывода в PictureBox используется внастоящем не GDI+, а WinApi или что-то немение быстрое.
Также нашел, что в С шарп можна свои контролы создавать. Там тоже есть функция двойной буферизации. Так я подумал: а если включить двойную буферизацию, Опасити поставить на 100% и рисовать на канве этого контрола. Будет ли это все также хорошо работать как и при выводе в PictureBOx. П.С. Придется если, что то работать с PictureBox и вставлять на контрол... Сам по себе его юсать не хочу, бо в нем определена куча методов мне не нужных и по идее они могут притормаживать работу. |
27.12.2008, 19:02 | #8 |
Форумчанин
Регистрация: 12.09.2008
Сообщений: 239
|
ну в основном мерцание идет от того, что в методе onPaint вы производите вычисления всякие и тд.... и при вызове метода он их заново делает, а в PictureBox все сохраняется растрово в BitMap и просто с него выводится.... плюс ко всему OnPaint вызывается даже когда он фактически не нужен..... при изменении размеров окна например если рисовать в форме и тд (тут и двойная буферизация не поможет избавиться от мерцания из-за просчетов, а при больших просчетах форма попросту будет зависать)...... а PictureBox просто локализирует этот метод только на определённый участок.
Надо бы избавиться от привычки ставить многоточие.....
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
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 |