powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Фоновый рисунок и проблема с BitBlt
13 сообщений из 13, страница 1 из 1
Фоновый рисунок и проблема с BitBlt
    #38384881
Deus_ex_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день! Помогите кто может знает, вроде задача простая, а вот что-то реализовать никак не получается.
Нужно разместить изображение по центру формы при чем, при изменении размеров картинка не косячилась и оставалась так же по
центру формы.
Делаю так кидаю на форму TImage, загружаю в дизайнтайме картинку BMP, Visible ставлю в FALSE.
В событии формы OnPaint следующий код:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
void __fastcall TfmMain::FormPaint(TObject *Sender)
{
int newLeft, newTop;

newLeft = int((fmMain->Width/2)-327);
newTop = int((fmMain->Height/2)-76-100);

BitBlt(Canvas->Handle,
       newLeft,newTop,
       655, 153,
       Image1->Canvas->Handle,
       0,0,
       SRCCOPY);
}



При запуске приложения сразу картинка нормально встает по центру, но вот при изменении размеров формы изображение глючит, затирается. Уже что только не перепробовал. Если новые координаты TOP и LEFT поставить в нули, то все работает, отрисовывает без глюков при изменении размеров формы только в левом верхнем углу, а не там где мне надо. Подскажите может кто знает что я делаю не так?
...
Рейтинг: 0 / 0
Фоновый рисунок и проблема с BitBlt
    #38385363
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Deus_ex_Делаю так кидаю на форму TImage, загружаю в дизайнтайме картинку BMP,
Visible ставлю в FALSE.
Зачем? Visible оставь в true, Stretch поставь false, Center опять true. Всё, телемаркет -
справка рулит.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Фоновый рисунок и проблема с BitBlt
    #38385381
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Deus_ex_,

Не подскажу по коду,
но по логике
перед тем как рисовать картинку снова, надо ее стереть (Clear()-?) - очистить форму, а потом рисовать заново.

Лучше поместить картинку в контейнер (PictureBox -?), а контейнер двигать.
Если например в используемой тобой среде есть что-то типа AutoRedraw для контрола-контейнера. рисуешь, то имеет смысл этим воспользоваться.

Как-то так.
...
Рейтинг: 0 / 0
Фоновый рисунок и проблема с BitBlt
    #38386088
Deus_ex_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov,
Так работает если только FormStyle = fsNormal, если FormStyle = fsMDIForm, то не работает, надо как то перерисовывать, пока остановился на первом варианте с MDI так и непонятно.
...
Рейтинг: 0 / 0
Фоновый рисунок и проблема с BitBlt
    #38386089
Deus_ex_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Дмитрий77Deus_ex_,

Не подскажу по коду,
но по логике
перед тем как рисовать картинку снова, надо ее стереть (Clear()-?) - очистить форму, а потом рисовать заново.

Лучше поместить картинку в контейнер (PictureBox -?), а контейнер двигать.
Если например в используемой тобой среде есть что-то типа AutoRedraw для контрола-контейнера. рисуешь, то имеет смысл этим воспользоваться.

Как-то так.
По логике то вроде так, но ват как это написать :) у канваса формы нет метода Clear :) а в ручную закрашивать эт мне кажется плохое решение, костыльное, хотя может единственно возможное в данном решение задачи.
...
Рейтинг: 0 / 0
Фоновый рисунок и проблема с BitBlt
    #38386548
pirovindos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Deus_ex_,
Годится для очистки?
PatBlt(Handle, // Handle Canvas'а
0, // начальная координата по X
0, // начальная координата по Y
Width, // конечная координата по X
Height, // конечная координата по Y
WHITENESS // как закрашивать
);
...
Рейтинг: 0 / 0
Фоновый рисунок и проблема с BitBlt
    #38386571
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Deus_ex_Так работает если только FormStyle = fsNormal, если FormStyle = fsMDIForm,
то не работает
Так ты хочешь просто фоновый рисунок для главной MDI формы? Так бы и сказал. Для этого
достаточно поиграться с её Brush-ем, одна строчка кода.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Фоновый рисунок и проблема с BitBlt
    #38386630
Deus_ex_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry SibiryakovDeus_ex_Так работает если только FormStyle = fsNormal, если FormStyle = fsMDIForm,
то не работает
Так ты хочешь просто фоновый рисунок для главной MDI формы? Так бы и сказал. Для этого
достаточно поиграться с её Brush-ем, одна строчка кода.

да, так и хочу, но он небольшой и должен быть всегда по центру даже при ресайзе формы. А есть примерчик такой строчки?
...
Рейтинг: 0 / 0
Фоновый рисунок и проблема с BitBlt
    #38386633
Deus_ex_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
pirovindos,

спасибо, если других способов не найду буду пробовать через очистку.
...
Рейтинг: 0 / 0
Фоновый рисунок и проблема с BitBlt
    #38386651
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Deus_ex_А есть примерчик такой строчки?
В справку совершенно лень заглянуть?..
Код: sql
1.
2.
   BrushBmp->LoadFromFile("MyBitmap.bmp");
   Brush->Bitmap = BrushBmp;

[/quot]
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Фоновый рисунок и проблема с BitBlt
    #38386710
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pirovindos,

если ты в API (PatBlt и т.д.) залез, то через API (как вариант) и стирай, чего бояться то.

Я тебе дал общий совет, потому что когда-то с подобным возился .

Но заметь, что у меня были все инструменты для того чтобы присвоить картинку контролу в конструкторе (без API), и без глюков при перерисовке.
И у тебя такие инструменты возможно тоже есть, я не знаю.
Просто в моем случае древний VB6 конструктор не поддерживает 32-битные иконки, и только поэтому я рисовал иконку ручками на hdc.
...
Рейтинг: 0 / 0
Фоновый рисунок и проблема с BitBlt
    #38386716
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
сорри, неправильно указал автора топика в предыдущем сообщении
...
Рейтинг: 0 / 0
Фоновый рисунок и проблема с BitBlt
    #38387920
Deus_ex_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем огромное спасибо за участие, пока некогда пробовать то, что насоветовали. Через пару дней отпишусь.
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Фоновый рисунок и проблема с BitBlt
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]