Текущий архив: 2002.11.07;
Скачать: CL | DM;
Вниз
графика Найти похожие ветки
← →
_Alex_ © (2002-09-25 21:20) [0]В ресурсе, лежит bmp"шка, как лучше средствами WinAPI нарисовать ее в определенном месте, рисовать на форме?
Прочитал справку, там только static, edit, button и т.д.
← →
Юрий Зотов © (2002-09-25 21:28) [1]А при чем тут контролы?
См. LoadBitmap, GetDC, BitBlt/StretchBlt, ReleaseDC.
← →
Suntechnic © (2002-09-25 22:35) [2]Ты о диалоговых окнах из ресурсов ведёшь речь?
Тогда тебе 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 это идентификаторы ресурсов которые определены в другом месте. Я написал так для удобства, иначе пришлось бы писать просто числа, что запутоо бы картину ещё сильней.
← →
Evgeny © (2002-09-26 05:14) [3]Можно и без Static`а нарисовать в любом месте окна (но не формы - это не VCL), но тогда перерисовку придется отслеживать программно (в сообщении WM_PAINT). А основные функции для этого уже указал Юрий Зотов.
← →
Suntechnic © (2002-09-26 05:38) [4]>Evgeny © (26.09.02 05:14)
Ну а какой в этом смысл? Чесать правой рукой за левым ухом?
← →
Evgeny © (2002-09-26 07:11) [5]Не знаю как насчет чесать, а вот динамическое изменение рисунка бывает нужно очень часто.
← →
Suntechnic © (2002-09-26 07:49) [6]Evgeny © (26.09.02 07:11)
Не знаю как насчет чесать, а вот динамическое изменение рисунка бывает нужно очень часто.
Что Вы подразумеваете под "динамическим изменением рисунка"? Картинку что ли сменить? Вы думаете это так сложно?
SendMessage(hWnd, STM_SETIMAGE, IMAGE_BITMAP, (LPARAM)hBitmap);
Делов то...
← →
Evgeny © (2002-09-26 09:36) [7]К сожалению разговор склоняется в сторону бесполезных дебатов, и скорее всего каждый останется при своем мнении. Но:
SendMessage(hWnd, STM_SETIMAGE, IMAGE_BITMAP, (LPARAM)hBitmap);
данную функцию я не стал бы применять хотя бы в том же Тетрисе. А в остальном сколько программистов столько и мнений, столько и разных подходов к одинаковой проблеме. Считаю дальнейшую дискуссию бессмысленной, с чем и откланиваюсь.
← →
_Alex_ © (2002-09-26 10:16) [8]Имется 2 рисунка (15х15), многократно размножив 1 рисунок надо сделать "поле" размером 20x20.
т.e. 300х300. затем по "полю" будет двигаться 2 рисунок, диалговых окон в ресурсах не будет.
Всем спасибо за ответы.
← →
Suntechnic © (2002-09-26 15:51) [9]>_Alex_ © (26.09.02 10:16)
Диалоговые окна это так к слово. Ты же не сказал точно что тебе надо, пришлось всем догадываться. Окно со стилем "static" то можно создать и без ресурсов, но то, что ты тут описал в пояснении совсем не согласуется с начальным вопросом.
Так что читай самый первый ответ Юрий Зотов © (25.09.02 21:28) и впредь формулируй вопрос чётче.
← →
_Alex_ © (2002-09-26 16:05) [10]Сори, действительно ввел Вас в заблуждение.
Правильна ли будет следующая конструкция?
рисование одной 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;
← →
Evgeny © (2002-09-27 05:00) [11]>Правильна ли будет следующая конструкция?
почти.
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-27 15:55) [12]2 Evgeny
Спасибо, работает.
Страницы: 1 вся ветка
Текущий архив: 2002.11.07;
Скачать: CL | DM;
Память: 0.49 MB
Время: 0.025 c