(Gast)
n/a Beiträge
|
Menu Hintergrundbild
29. Aug 2016, 17:18
Ich erstelle ein Ownerdraw Menu.
Dort möchte ich als Hintergrund ein Bild einfügen.
Das Problem dabei ist wenn ich das Handle des Menü nehme daraus den Rect auslese und das Bild als Hintergrund zuweise
das anschließend alle Items nicht mehr gezeichnet werden beim Start.
Verwende ich aber die Items und lege das Hintergrundbild dafür fest sind alle Items sichtbar.
Aber es sieht dann aus wie.. na ihr wisst schon. (Siehe Anhang Items)
Zeichnen des Hintergrund in alle items.
Delphi-Quellcode:
// DrawBackground
if GDIP_CreateFromHDC(PDis.HDC, Graphics) = 0 then
begin
ImgBack := Cardinal(SKAERO_GetProperty(WinHandle, FORM_Center));
if not(PDis.ItemId = IDM_SeperatorFiles) and not(PDis.ItemId = IDM_SeperatorPList)
and not(PDis.ItemId = IDM_SeperatorSkins) and not
(PDis.ItemId = IDM_SeperatorClose) then
begin
GDIP_GetImageSize(ImgBack, imgW, imgH);
GDIP_DrawImageRectRectI(Graphics, ImgBack, PDis.rcItem.Left, PDis.rcItem.Top,
PDis.rcItem.Right, 20, 0, 0, imgW, imgH, 2, nil, False, nil);
end else
begin
GDIP_GetImageSize(ImgSep, imgW, imgH);
GDIP_DrawImageRectRectI(Graphics, ImgSep, PDis.rcItem.Left, PDis.rcItem.Top,
PDis.rcItem.Right, 20, 0, 0, imgW, imgH, 2, nil, False, nil);
end;
end;
Zeichnen des Hintergrund.
Delphi-Quellcode:
// DrawBackground
if GDIP_CreateFromHDC(PDis.HDC, Graphics) = 0 then
begin
GetClientRect(hMenuWnd, Rect);
ImgBack := Cardinal(SKAERO_GetProperty(WinHandle, FORM_Center));
GDIP_GetImageSize(ImgBack, imgW, imgH);
GDIP_DrawImageRectRectI(Graphics, ImgBack, Rect.Left, Rect.Top,
Rect.Right, Rect.Bottom, 0, 0, imgW, imgH, 2, nil, False, nil);
end;
Jemand eine Idee wie ich verhindern kann das die Items gelöscht werden?
Siehe Anhang Back.
gruss
Geändert von EWeiss (11. Jul 2019 um 16:44 Uhr)
|