Страница: 1 |
Страница: 1 |
Вопрос: Графика
Добавлено: 21.07.04 13:10
Автор вопроса: Keen | ICQ: 284-467-526
Два таких вот вопроса:
1. Как применить BitBlt к объекту StdPicture?
2. Почему если рисовать с помощью BitBlt на picturebox c autoredraw=true то ничего не видно и как этого можно избежать (причем autoredraw всеравно true)?
Очень надо, помогите...
Ответы
Всего ответов: 9
Номер ответа: 1
Автор ответа:
sne
Разработчик Offline Client
ICQ: 233286456
Вопросов: 34
Ответов: 5445
Web-сайт:
Профиль | | #1
Добавлено: 21.07.04 14:42
BitPlt не может рисовать на StdPicture... Т.к. это объект, и у него нет DeviceContent'a... который и передается функции...
Номер ответа: 2
Автор ответа:
@CyRax PTR
ICQ: 204447456
Вопросов: 28
Ответов: 664
Web-сайт:
Профиль | | #2
Добавлено: 21.07.04 16:40
Скачай пример Blt2PBox с моего сайта.
А тут вроде "особо продвинутые" програмеры кричали что autoredraw помогает.
Номер ответа: 3
Автор ответа:
Keen
ICQ: 284-467-526
Вопросов: 12
Ответов: 25
Профиль | | #3
Добавлено: 21.07.04 17:34
2sne: у StdPicture есть свой-во handle , но от этого не легче.
2Cyrax: сейчас посмотрим...
Номер ответа: 4
Автор ответа:
sne
Разработчик Offline Client
ICQ: 233286456
Вопросов: 34
Ответов: 5445
Web-сайт:
Профиль | | #4
Добавлено: 21.07.04 18:10
В PictureBox есть тоже объект StdHandle c handle'ом, но есть и hDC, так что как ты верно подметил, от этого никому не легче...
Номер ответа: 5
Автор ответа:
cresta
Вопросов: 117
Ответов: 1538
Профиль | | #5
Добавлено: 21.07.04 18:26
Насколько я понимаю, autoredraw совсем не означает, что твоя новая картинка будет отрисована. Скорее наоборот. По-моему при autoredraw в оконную процедуру посылается WM_PAINT и при этом рисуется последний ассоциированный с данным окном рисунок. Если не было изначально рисунка у окна, то нарисованое BitBlt будет затерто на пустое место.
Чтобы этого не было, picturebox-у нужно "присвоить" твой новый рисунок. И после этого autoredraw не страшен.
Сделай примерно так: Set F2.Pic.Picture = F2.Pic.Image
Номер ответа: 6
Автор ответа:
@CyRax PTR
ICQ: 204447456
Вопросов: 28
Ответов: 664
Web-сайт:
Профиль | | #6
Добавлено: 21.07.04 20:40
cresta,
Ага, сохраняет. Но только если Autoredraw=True
Номер ответа: 7
Автор ответа:
@CyRax PTR
ICQ: 204447456
Вопросов: 28
Ответов: 664
Web-сайт:
Профиль | | #7
Добавлено: 21.07.04 20:43
Архив действительно называется blt2pbox
А на сайте пример называется ImgToPBox
Раз уж я сам залез - на ссылку
http://basicproduction.nm.ru/Blt2PBox.zip
Номер ответа: 8
Автор ответа:
Keen
ICQ: 284-467-526
Вопросов: 12
Ответов: 25
Профиль | | #8
Добавлено: 22.07.04 12:00
Я это уже понял, Cyrax . Вообще-то твой пример создает постоянную картинку на пикчере, а мне нужно нарисовать в произвольном месте... Ну да ладно, можете не париться, проблему я уже сам решил - transparentblt рисует даже на autoredraw=true без проблем . Но все равно спасибо за старание помочь!
Номер ответа: 9
Автор ответа:
Fallout
Вопросов: 10
Ответов: 387
Web-сайт:
Профиль | | #9
Добавлено: 22.07.04 12:21
Если стоит AutoRedraw=true то :
+То что ты нарисовал будет сохранено и при перерисовки формы не исчезнет (после того ка кчто нить нарисуешь то надо делать REFRASH картинки чтоб она перерисовалась и тогда соотсвено появится твоя картинка..)
-Скорость значительно ниже чем в false... но если стоит фолс то при пересеросовки будет исчезать твоя картинка +)... да кстати смотри рефрешь не делай если стоит фолс +) а то её и не увидешь