Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 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-сайт: hw.t-k.ru
 Профиль | | #1
Добавлено: 21.07.04 14:42
BitPlt не может рисовать на StdPicture... Т.к. это объект, и у него нет DeviceContent'a... который и передается функции...

Ответить

Номер ответа: 2
Автор ответа:
 @CyRax PTR



ICQ: 204447456 

Вопросов: 28
Ответов: 664
 Web-сайт: basicproduction.nm.ru/
 Профиль | | #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-сайт: hw.t-k.ru
 Профиль | | #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-сайт: basicproduction.nm.ru/
 Профиль | | #6
Добавлено: 21.07.04 20:40
cresta,
 Ага, сохраняет. Но только если Autoredraw=True

Ответить

Номер ответа: 7
Автор ответа:
 @CyRax PTR



ICQ: 204447456 

Вопросов: 28
Ответов: 664
 Web-сайт: basicproduction.nm.ru/
 Профиль | | #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-сайт: mudator.by.ru
 Профиль | | #9
Добавлено: 22.07.04 12:21
Если стоит AutoRedraw=true то :

+То что ты нарисовал будет сохранено и при перерисовки формы не исчезнет (после того ка кчто нить нарисуешь то надо делать REFRASH картинки чтоб она перерисовалась и тогда соотсвено появится твоя картинка..)
-Скорость значительно ниже чем в false... но если стоит фолс то при пересеросовки будет исчезать твоя картинка +)... да кстати смотри рефрешь не делай если стоит фолс +) а то её и не увидешь

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам