Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 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
3-21403
ppcat
2002-10-18 09:56
2002.11.07
MS SQL поле с флагом IDENTITY


6-21707
VxD
2002-09-09 23:48
2002.11.07
Каким образом отправить Email при помощи скрипта?


1-21591
andre_nik
2002-10-29 16:29
2002.11.07
метод show для форм


14-21802
D_B
2002-10-17 08:59
2002.11.07
Что за профессия - эникейщик ?


3-21371
{bas}
2002-10-17 12:57
2002.11.07
Русские буквы в ADO для DBase or FoxPro