Visual Basic, .NET, ASP, VBScript
 

   
   
     

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

Страница: 1 | 2 |

 

  Вопрос: Form to BMP Добавлено: 17.07.04 02:22  

Автор вопроса:  Ratu.R

Ответить

  Ответы Всего ответов: 22  

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



ICQ: 204447456 

Вопросов: 28
Ответов: 664
 Web-сайт: basicproduction.nm.ru/
 Профиль | | #16
Добавлено: 18.07.04 00:47
 Всегда удивлялся зачем это делают контролы из одной API типа копирования экрана или выключения компьютера.
Теперь уже не удивляюсь - понял почему.
 Эх, послал бы я тебя на свой сайт, что бы ты там порылся, но боюсь что ты и найти то пример не сможешь самостоятельно.
Поэтому сразу даю ссылку.
http://basicproduction.nm.ru/Blt2PBox.zip
 Посмотри в примере как работает функция BitBlt. Ошибок там точно нет - я гарантирую :)

Ответить

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



ICQ: 204447456 

Вопросов: 28
Ответов: 664
 Web-сайт: basicproduction.nm.ru/
 Профиль | | #17
Добавлено: 18.07.04 01:20
 Функция BitBlt использует для работы не объект Form, а его свойство hDC.
Получить доступ к нему можно так: Form1.hDc.
Вот эта фигня hDc нужна когда ты хочешь вызвать какую нибудь API-функцию для работы с графикой.
У каждого объекта на форме(и у неё самой) есть hDC.

 BitBlt - это графическая функция.
А какое свойство формы работает с графическими функциями?
Никогда не догадаешся - это hDC.

Вот и вызывай
BitBlt Источник.hDC, Источник.Left, Источник.Top, Длина, Ширина, Приёмник.hDC, Приёмник.Left, Приёмник.Top, Операция
 где Операция=SRCCOPY=&HCC0020

Прмечание: В API функциях все расстояния измеряются в Пикселях (1 точка монитора).

Допустим у тебя приёмник Picture1
После выполнения BitBlt рисунок формы окажется у тебя в Picture1.
Для сохранения рисунка используй функцию VB (это уже не API, поэтому работает не с hDC, а с объектом непосредственно)
SavePicture Picture1, "ИмяФайла.BMP"

Файл JPEG не поддерживается в VB6. Только BMP.

Ответить

Номер ответа: 18
Автор ответа:
 Ratu.R



Вопросов: 8
Ответов: 19
 Профиль | | #18 Добавлено: 18.07.04 11:33
Спасибо всем за помощь, особенно @CyRax PTR. Правда я уже сегодня ночью все сделол, но всеравно спасибо

Ответить

Номер ответа: 19
Автор ответа:
 Ratu.R



Вопросов: 8
Ответов: 19
 Профиль | | #19 Добавлено: 18.07.04 13:30
@CyRax PTR
Слыш у меня глюк или я что-то не правильно сделал. Написал все правильно, когда нажимаю сохранить, то если форма в которую я копирую не под другой формой или не свернута, то все ОК, но если ее свернуть, то все скопированное пропадает.
 Если можно ответь поскорее у меня осталось 3 дня.

Ответить

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



ICQ: 204447456 

Вопросов: 28
Ответов: 664
 Web-сайт: basicproduction.nm.ru/
 Профиль | | #20
Добавлено: 18.07.04 20:35
 BitBlt не сохраняет изображение в PictureBox, а просто его там рисует.
 Windows через определённые промежутки времени посылает всем окнам сообщение перерисоваться.
 И когда твоя форма(в твоём случае PictureBox) получает это сообщение она перерисовывается встроенными средствами. Для дополнительной прорисовки можно прописать свой код в Form_Paint.
 При перерисовке форма создаёт одноразовый рисунок своего внешнего вида. Для того чтобы изображения не размазывались форма создаёт такие мгновенные рисунки каждый раз при получении сообщения "Перерисоваться".
 Рисунок создаваемый с помощью BitBlt тоже является одноразовым рисунком. И при перерисовке объекта затирается изображением формы(контрола).
 Ты всё таки скачай мой пример. Я его для фонаря писал что ли? А если ты и так всё знаешь, то нечего и вопросы задавать в форуме.
 Если сам не в состоянии найти ссылку, то это ответ номер 16(этой темы).
 Этот пример создаёт уже не одноразовый снимок, а полноценный рисунок контрола/формы внутри объекта PictureBox. И раз это его рисунок, то он перерисовывается средствами VB. А конкретно - его перерисовывает PictureBox при получении очередного сообщения перерисовки.

Ответить

Номер ответа: 21
Автор ответа:
 AASoft



Вопросов: 86
Ответов: 920
 Профиль | | #21 Добавлено: 19.07.04 03:47
2 @CyRaxPTR:
to che BitBlt ne sohranyaet my vse znaem, a vot to chto mona yuzat` AutoRedraw......
koroche, ego nado stavit` v TRUE, posle etogo BitBlt'im, i vse...vrode......po eksperementiruj, v tom chisle i esli napimer sdelat AR=FALSE, potom BitBlt, potom TRUE opyat`..koroche ekperimentiruj....udachi.

Ответить

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



ICQ: 204447456 

Вопросов: 28
Ответов: 664
 Web-сайт: basicproduction.nm.ru/
 Профиль | | #22
Добавлено: 19.07.04 12:04
 Да, попробуй, я всегда про него забываю.

Ответить

Страница: 1 | 2 |

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



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