Thema: Delphi Menu Hintergrundbild

Einzelnen Beitrag anzeigen

EWeiss
(Gast)

n/a Beiträge
 
#1

Menu Hintergrundbild

  Alt 29. Aug 2016, 16: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 15:44 Uhr)
  Mit Zitat antworten Zitat