Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Wie verwende ich Overlay Icons ? (https://www.delphipraxis.net/123452-wie-verwende-ich-overlay-icons.html)

RWarnecke 2. Nov 2008 11:32


Wie verwende ich Overlay Icons ?
 
Hallo zusammen,

ich habe für mein Programm bestimmte Icons in einer ImageList. Wenn ich jetzt ein Icon in einem Menü oder in einem TreeView aus der ImageList anzeigen möchte, wähle ich ja den passenden Index aus. Wie kann ich nun ein Overlay Icon über dieses Icon aus der Imagelist legen oder zeichnen ?

Ich hoffe ich habe mich verständlich ausgedrückt, ansonsten nochmal nachfragen.

RWarnecke 4. Nov 2008 13:21

Re: Wie verwende ich Overlay Icons ?
 
*push* Hat noch niemand mit Overlay Icons gearbeitet ? *push*

Andreas L. 4. Nov 2008 14:46

Re: Wie verwende ich Overlay Icons ?
 
Was sollen Overlay Icons sein? Kannst du mal ein Beispiel als Bild posten. Meinst du vllt. Hover Bildchen?

RWarnecke 4. Nov 2008 15:48

Re: Wie verwende ich Overlay Icons ?
 
Liste der Anhänge anzeigen (Anzahl: 2)
siehe Anhang

Bild 1 = ganz normales Icon
Bild 2 = Overlay Icon

Ich möchte nun Bild 1 mit Bild 2 kombinieren. Jetzt ist die Frage, kann ich die Anzeige von beiden Bildern irgendwie programmieren oder muss ich jede Kombination die ich haben möchte erst in einem Grafikprogramm zusammensetzen ?

OregonGhost 4. Nov 2008 15:57

Re: Wie verwende ich Overlay Icons ?
 
Ich hab zwar keine diesbezügliche Erfahrung mit Delphi, aber bisher habe ich im Allgemeinen die Overlays selbst gezeichnet. Das schließt im Normalfall natürlich ein, auch das Icon ohne Overlay selbst zu zeichnen, damit es auch brav an derselben Stelle sitzt. Ist in meinen Augen kein großes Problem.
Alternativ kannst du, wenn die möglichen Kombinationen Icon/Overlay begrenzt sind, diese im Vorfeld (Entwicklungszeit oder Anwendungsstart) kombiniert erzeugen und kannst dann in der Anwendung selbst wieder mit einfachen Icons arbeiten.

RWarnecke 4. Nov 2008 16:07

Re: Wie verwende ich Overlay Icons ?
 
Zitat:

Zitat von OregonGhost
Ich hab zwar keine diesbezügliche Erfahrung mit Delphi, aber bisher habe ich im Allgemeinen die Overlays selbst gezeichnet. Das schließt im Normalfall natürlich ein, auch das Icon ohne Overlay selbst zu zeichnen, damit es auch brav an derselben Stelle sitzt. Ist in meinen Augen kein großes Problem.

Ich bin da grafisch nicht so begabt. Wenn ich allerdings ein Programm habe, dass mir die beiden Icons passend zusammenbaut, würde ich mir die nötigen Kombinationen speichern und dann als Icon benutzen.
Zitat:

Zitat von OregonGhost
Alternativ kannst du, wenn die möglichen Kombinationen Icon/Overlay begrenzt sind, diese im Vorfeld (Entwicklungszeit oder Anwendungsstart) kombiniert erzeugen und kannst dann in der Anwendung selbst wieder mit einfachen Icons arbeiten.

Das verstehe ich hier nicht so ganz. Könntest Du das bitte ein bisschen näher erklären, wie und was ich da machen soll.

Edit: Rechtschreibfehler korrigiert

ibp 9. Nov 2008 13:43

Re: Wie verwende ich Overlay Icons ?
 
relavanten punkte...

Delphi-Quellcode:
...
OverlayIndex:=0; // 0..3 
OverlayBildIdx:=XXX // index Overlay-Bild aus ImgList
...
ImgList.Overlay(OverlayBildIdx,OverlayIndex); // overlay definieren
...

treeNode.ImageIndex:=meinBildindex // idx aus treeImg

if jaBitteOverlayanzeigen then
begin
  treeNode.OverlayIndex:=OverlayIndex // aus der imagelist
end;
dann sollte meinBild mit dem Overlay dargestellt werden

RWarnecke 9. Nov 2008 14:12

Re: Wie verwende ich Overlay Icons ?
 
Danke für Deine Antwort. Für den TreeView habe ich es hinbekommen. Nur habe ich keine Overlay-Funktion in einem MainMenu oder PopupMenu. Wie könnte ich das denn für die Menüs realisieren ?
Habe das so versucht wie mit dem TreeView, aber leider hat es nicht funktioniert.

ibp 10. Nov 2008 10:56

Re: Wie verwende ich Overlay Icons ?
 
schau dir mal ImageList.DrawOverlay an...

OregonGhost 10. Nov 2008 11:05

Re: Wie verwende ich Overlay Icons ?
 
Zitat:

Zitat von RWarnecke
Ich bin da grafisch nicht so begabt. Wenn ich allerdings ein Programm habe, dass mir die beiden Icons passend zusammenbaut, würde ich mir die nötigen Kombinationen speichern und dann als Icon benutzen.

Mit selbst zeichnen meinte ich nicht von Hand, sondern Ownerdraw. Geht bei Menüs, TreeView, ListView, eigentlich überall.
Zitat:

Zitat von RWarnecke
Das verstehe ich hier nicht so ganz. Könntest Du das bitte ein bisschen näher erklären, wie und was ich da machen soll.

Ich meinte, du könntest einfach beim Programmstart alle normalen Icons und alle Overlay-Icons laden, und dann alle (sinnvollen) Kombinationen erzeugen, so dass du für jede Kombination ein einzelnes Icon hast, das du dann zuweisen kannst. Das geht dann auch bei Controls, die keine Overlays und auch kein Ownerdraw unterstützen.

ibp 10. Nov 2008 12:17

Re: Wie verwende ich Overlay Icons ?
 
so geht es und ist entsprechend anpassbar...

Delphi-Quellcode:
var abitmap:TBitMap;
begin
  abitmap:=TBitMap.Create;
  try
    abitmap.Width:=ImageList1.Width;
    abitmap.Height:=ImageList1.Width;

    ImageList1.DrawOverlay(aBitMap.Canvas,0,0,0,0,true);

    PopupMenu1.Items.Items[0].ImageIndex:=-1;
    PopupMenu1.Items.Items[0].Bitmap:=aBitMap;
  finally
    abitmap.Free;
  end;
end;

RWarnecke 10. Nov 2008 19:18

Re: Wie verwende ich Overlay Icons ?
 
Zitat:

Zitat von ibp
so geht es und ist entsprechend anpassbar...

Delphi-Quellcode:
var abitmap:TBitMap;
begin
  abitmap:=TBitMap.Create;
  try
    abitmap.Width:=ImageList1.Width;
    abitmap.Height:=ImageList1.Width;

    ImageList1.DrawOverlay(aBitMap.Canvas,0,0,0,0,true);

    PopupMenu1.Items.Items[0].ImageIndex:=-1;
    PopupMenu1.Items.Items[0].Bitmap:=aBitMap;
  finally
    abitmap.Free;
  end;
end;

Hallo Danke erstmal für eure Antworten. Das Beispiel funktioniert irgendwie nicht von Dir ibp.Das Problem dabei besteht, wenn ich bei DrawOverly bei der 4. Zahl eine 19 eintrage, dann bekomme ich den Fehler, dass es ausserhalb des Bereichs ist. Das wäre nicht so schlimm, dann setze ich die OverlayIcons nach vorne. Nur wenn ich das mache, funktioniert es auch nicht. Ich habe das OwnerDraw und DrawOverlay noch nie benutzt und tappe ziemlich im Dunkeln. Hat jemand dazu ein Tutorial, wo drin diese Funktionen beschrieben sind ?

ibp 11. Nov 2008 07:44

Re: Wie verwende ich Overlay Icons ?
 
ja schau doch einfach in der Onlinehilfe (F1) nach, da steht wie DrawOverlay definiert ist!

RWarnecke 11. Nov 2008 18:19

Re: Wie verwende ich Overlay Icons ?
 
Ich habe jetzt eine Möglichkeit gefunden : :dancer2: :dancer: :bounce1:
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
var
  abitmap:TBitMap;
  OverlayIndex: Integer;
  OverlayBildIdx: Integer;
begin
  abitmap:=TBitMap.Create;
  try
    abitmap.Width:=ImageList1.Width;
    abitmap.Height:=ImageList1.Height;

    OverlayIndex := 0;
    OverlayBildIdx := 2;
    ImageList1.Overlay(OverlayBildIdx, OverlayIndex);
    ImageList1.DrawOverlay(aBitMap.Canvas,0,0,0,0,true);

    PopupMenu1.Items.Items[0].ImageIndex:=-1;
    PopupMenu1.Items.Items[0].Bitmap:=aBitMap;
  finally
    abitmap.Free;
  end;
end;
Ich danke euch allen, die so viel Geduld mit mir hatten.


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:40 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz