Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

графика [D5, Win95/98]


_Alex_ ©   (2002-09-25 21:20:00) 

В ресурсе, лежит bmp"шка, как лучше средствами WinAPI нарисовать ее в определенном месте, рисовать на форме?
Прочитал справку, там только static, edit, button и т.д.


_Alex_   (2002-09-27 15:55:00) [1]

2 Evgeny
Спасибо, работает.


Evgeny   (2002-09-27 05:00:00) [2]

>Правильна ли будет следующая конструкция?
почти.

var
mywnd: hWnd;
Bmp1,Bmp2: HBitmap;
bmpdc,windc: hdc;

procedure DrawBmp;
begin
Bitblt(windc, 0, 0, 15, 15, bmpdc, 0, 0, SRCCOPY);
end;

procedure CreatBitmap;
begin
bmp1 := LoadBitmap(hInstance,"f");//
windc := GetDC(mywnd);
bmpDC := CreateCompatibleDC(winDC);
SelectObject(bmpDC, bmp1);
DrawBMP;
DeleteDC(bmpDC);
ReleaseDC(mywnd, winDC);
DeleteObject(bmp1);
end;


_Alex_   (2002-09-26 16:05:00) [3]

Сори, действительно ввел Вас в заблуждение.
Правильна ли будет следующая конструкция?
рисование одной bmp

var
mywnd: hWnd;
Bmp1,Bmp2: HBitmap;
bmpdc,windc: hdc;

procedure DrawBmp;
begin
Bitblt(windc,0,0,15,15,bmpdc,0,0,SRCCOPY);
end;

procedure CreatBitmap;
begin
bmp1:=LoadBitmap(hInstance,"f");//
windc:=GetDC(mywnd);

ReleaseDc(mywnd,windc);
DeleteObject(bmp1);
end;


Suntechnic   (2002-09-26 15:51:00) [4]

>_Alex_ © (26.09.02 10:16)
Диалоговые окна это так к слово. Ты же не сказал точно что тебе надо, пришлось всем догадываться. Окно со стилем "static" то можно создать и без ресурсов, но то, что ты тут описал в пояснении совсем не согласуется с начальным вопросом.
Так что читай самый первый ответ Юрий Зотов © (25.09.02 21:28) и впредь формулируй вопрос чётче.


_Alex_   (2002-09-26 10:16:00) [5]

Имется 2 рисунка (15х15), многократно размножив 1 рисунок надо сделать "поле" размером 20x20.
т.e. 300х300. затем по "полю" будет двигаться 2 рисунок, диалговых окон в ресурсах не будет.
Всем спасибо за ответы.


Evgeny   (2002-09-26 09:36:00) [6]

К сожалению разговор склоняется в сторону бесполезных дебатов, и скорее всего каждый останется при своем мнении. Но:
SendMessage(hWnd, STM_SETIMAGE, IMAGE_BITMAP, (LPARAM)hBitmap);
данную функцию я не стал бы применять хотя бы в том же Тетрисе. А в остальном сколько программистов столько и мнений, столько и разных подходов к одинаковой проблеме. Считаю дальнейшую дискуссию бессмысленной, с чем и откланиваюсь.


Suntechnic   (2002-09-26 07:49:00) [7]

Evgeny © (26.09.02 07:11)
Не знаю как насчет чесать, а вот динамическое изменение рисунка бывает нужно очень часто.

Что Вы подразумеваете под "динамическим изменением рисунка"? Картинку что ли сменить? Вы думаете это так сложно?

SendMessage(hWnd, STM_SETIMAGE, IMAGE_BITMAP, (LPARAM)hBitmap);

Делов то...


Evgeny   (2002-09-26 07:11:00) [8]

Не знаю как насчет чесать, а вот динамическое изменение рисунка бывает нужно очень часто.


Suntechnic   (2002-09-26 05:38:00) [9]

>Evgeny © (26.09.02 05:14)
Ну а какой в этом смысл? Чесать правой рукой за левым ухом?


Evgeny   (2002-09-26 05:14:00) [10]

Можно и без Static`а нарисовать в любом месте окна (но не формы - это не VCL), но тогда перерисовку придется отслеживать программно (в сообщении WM_PAINT). А основные функции для этого уже указал Юрий Зотов.


Suntechnic   (2002-09-25 22:35:00) [11]

Ты о диалоговых окнах из ресурсов ведёшь речь?
Тогда тебе static понадобитcя, а ресурс будет выгдядеть примерно следующим образом

IDD_DIALOG DIALOGEX 0, 0, 210, 154
STYLE WS_CHILD | WS_DISABLED | WS_CAPTION
CAPTION "Test bmp dialog"
FONT 8, "MS Sans Serif"
BEGIN
CONTROL BITMAP_ID, STATIC_ID,"Static",SS_BITMAP,76,45,15,13,
WS_EX_TRANSPARENT
END

Если для тебя это не филькина грамота, то я надеюсь ты понимаешь, что IDD_DIALOG, BITMAP_ID, STATIC_ID это идентификаторы ресурсов которые определены в другом месте. Я написал так для удобства, иначе пришлось бы писать просто числа, что запутоо бы картину ещё сильней.


Юрий Зотов   (2002-09-25 21:28:00) [12]

А при чем тут контролы?
См. LoadBitmap, GetDC, BitBlt/StretchBlt, ReleaseDC.


Наверх

Титульная страница Поиск, карта сайта Написать письмо