Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.03.03;
Скачать: CL | DM;

Вниз

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

 
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 вся ветка

Текущий архив: 2004.03.03;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.02 c
3-5945
wezz
2004-02-06 12:12
2004.03.03
Как сделать запрос в T-SQL?


4-6280
xoluay
2003-12-25 21:31
2004.03.03
Как узнать координаты Курсора мыши?


1-6100
Mishenka
2004-02-20 22:16
2004.03.03
Разделитель запятой в вещественных числах...


1-6048
maxXP
2004-02-19 02:04
2004.03.03
Как в ListBox определить количество элементов?


1-6091
jel
2004-02-21 23:13
2004.03.03
Дата создания файла и HTTP протокол