Страница: 1 | 2 |
Вопрос: Form to BMP
Добавлено: 17.07.04 02:22
Автор вопроса: Ratu.R
Ответы
Всего ответов: 22
Номер ответа: 16
Автор ответа:
@CyRax PTR
ICQ: 204447456
Вопросов: 28
Ответов: 664
Web-сайт:
Профиль | | #16
Добавлено: 18.07.04 00:47
Всегда удивлялся зачем это делают контролы из одной API типа копирования экрана или выключения компьютера.
Теперь уже не удивляюсь - понял почему.
Эх, послал бы я тебя на свой сайт, что бы ты там порылся, но боюсь что ты и найти то пример не сможешь самостоятельно.
Поэтому сразу даю ссылку.
http://basicproduction.nm.ru/Blt2PBox.zip
Посмотри в примере как работает функция BitBlt. Ошибок там точно нет - я гарантирую
Номер ответа: 17
Автор ответа:
@CyRax PTR
ICQ: 204447456
Вопросов: 28
Ответов: 664
Web-сайт:
Профиль | | #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-сайт:
Профиль | | #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-сайт:
Профиль | | #22
Добавлено: 19.07.04 12:04
Да, попробуй, я всегда про него забываю.