Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2004.03.03;
Скачать: [xml.tar.bz2];

Вниз

картинка на форме   Найти похожие ветки 

 
buka   (2003-12-19 15:22) [0]

Мастера подскажите. :-( Как на форму, без VCL, пристроить картинку, для разных форматов?


 
xli   (2003-12-19 16:25) [1]

А как это без VCL? Ведь TForm тоже родом из VCL... :)
Изъясняйтесь понятнее.

А так можно из файла загрузить изображение в TBitmap, а потом на Canvas формы его вывести. Можно, еще по точкам его нашкрябать, но это ОЧЕНЬ не быстро получится.


 
DVM   (2003-12-19 16:50) [2]

BitBlt() в обработчике WM_PAINT


 
buka   (2003-12-19 17:05) [3]

Как сюда добавить картинку?

WinMin.dpr

program WinMin;

uses
Windows,
Messages;

const
AppName = "WinMin";

Var
Window : HWnd;
hButton1, hLabel1 : HWnd;
Message : TMsg;
WindowClass : TWndClass;

function WindowProc (Window : HWnd; Message, WParam : Word;
LParam : LongInt) : LongInt; stdcall;
begin
WindowProc := 0;

case Message of
wm_Destroy : begin
PostQuitMessage (0);
Exit;
end;
// реакция на нажатие кнопки
wm_Command : if lParam = hButton1 then MessageBeep (mb_OK);
end; // case

WindowProc := DefWindowProc (Window, Message, WParam, LParam);
end;

begin
with WindowClass do begin
Style := cs_HRedraw or cs_VRedraw;
lpfnWndProc := @WindowProc;
cbClsExtra := 0;
cbWndExtra := 0;
hInstance := 0;
hIcon := LoadIcon (0, idi_Application);
hCursor := LoadCursor (0, idc_Arrow);
hbrBackground := COLOR_BTNFACE + 1;
lpszMenuName := "";
lpszClassName := AppName;
end;

If RegisterClass (WindowClass) = 0 then Halt (255);
Window := CreateWindow (AppName, "Win_Min", ws_OverlappedWindow,
cw_UseDefault, cw_UseDefault, cw_UseDefault, cw_UseDefault,
0, 0, HInstance, nil);

// Создание окна кнопки
hButton1 := CreateWindow ("Button", "Button1",
WS_VISIBLE or WS_CHILD or BS_PUSHLIKE or BS_TEXT,
5, 5, 65, 24, Window, 0, hInstance, nil);

// Создание окна метки
hLabel1 := CreateWindow("Static", "Label1", WS_VISIBLE or WS_CHILD or SS_LEFT,
80, 10, 70, 20, Window, 0, hInstance, nil);

ShowWindow (Window, CmdShow);
UpdateWindow (Window);

// Устанавливаем фокус на кнопке
SetFocus(hButton1);

while GetMessage (Message, 0, 0, 0) do begin
TranslateMessage (Message);
DispatchMessage (Message);
end;
Halt (Message.wParam);
end.


 
deema   (2003-12-19 23:01) [4]

1.
Прикрепить картинку к файлу можно создав и подключив файл ресурсов

program winmin;

{$R mybmp.res mybmp.rc}

В каталоге с проектом создать текстовый файл
mybmp.rc со строчкой
BITMAPRESUORCENAME BITMAP "mybmp.bmp"

При компиляции проекта файл mybmp.bmp запихивается в файл ресурса и цепляется к екзешнику.

2.
А рисовать ее можно и по WM_PAINT, однако, если картинку надо использовать как фон, то есть сообщение WM_CTLCOLORDLG, в ответ на которое нужно возвращать HBRUSH кисти, созданной из вашей картинки.


 
DVM   (2003-12-21 13:07) [5]

Вобщем основная последовательность такова.
1) Подготовить Bitmap на диске.
2) Подгрузить его с пом. LoadBitmap()
3) Создать функцию отрисовки битмапа по его HBitmap;
Пример:

void DrawBitmap(HDC hdc, HBITMAP hBMP, int x, int y)
{
BITMAP bm;
HDC hdcMem;
POINT ptSize, ptOrg;
hdcMem=CreateCompatibleDC(hdc);
SelectObject(hdcMem,hBMP);
SetMapMode(hdcMem,GetMapMode(hdc));
GetObject(hBMP,sizeof(BITMAP),(LPVOID)&bm);
ptSize.x=bm.bmWidth;
ptSize.y=bm.bmHeight;
DPtoLP(hdc,&ptSize,1);
ptOrg.x=0;
ptOrg.y=0;
DPtoLP(hdcMem,&ptOrg,1);
BitBlt(hdc,x,y,ptSize.x,ptSize.y,
hdcMem,ptOrg.x,ptOrg.y,SRCCOPY);
DeleteDC(hdcMem);
}

4) В обработчике WM_PAINT получить DC и отрисовыть битмап
5) Не забыть выгрузить битмап по окончании работы программы.


 
deema   (2003-12-25 19:32) [6]

А еще, вроде бы при описании класса окна, которое хотим создавать, можно задать кисть для раскраски ее в
hbrBackground := CreatePatternBrush(...); // или подобные функции



Страницы: 1 вся ветка

Форум: "WinAPI";
Текущий архив: 2004.03.03;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.006 c
1-6084
Случайно забежавший
2004-02-16 17:54
2004.03.03
StringGrid и перенос по словам


14-6240
ИМХО
2004-02-10 19:37
2004.03.03
Собираю...


6-6179
Den_py
2003-12-27 07:17
2004.03.03
Socket


14-6181
Goida
2004-02-11 16:46
2004.03.03
Тестирование ПО


1-6093
dr Tr0jan
2004-02-16 03:49
2004.03.03
Как убрать звук из TEdit?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский