AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Icon in Image zeichnen
Thema durchsuchen
Ansicht
Themen-Optionen

Icon in Image zeichnen

Ein Thema von devnull · begonnen am 25. Okt 2003 · letzter Beitrag vom 25. Okt 2003
Antwort Antwort
Benutzerbild von devnull
devnull

Registriert seit: 5. Okt 2003
362 Beiträge
 
Delphi 7 Personal
 
#1

Icon in Image zeichnen

  Alt 25. Okt 2003, 16:12
Hi,

ich habe ein Image Objekt (Größe 20x17 Pixel) und ein Icon (Größe 64x64 Pixel).

Wie kann ich das ganze Icon verkleinern, so dass es komplett im Image angezeigt wird?
Es ist egal, wie verzerrt das dann Ding ist

devnull
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: Icon in Image zeichnen

  Alt 25. Okt 2003, 17:29
Delphi-Quellcode:
Image1.Stretch:=true;
Image1.Proportional:=true;
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: Icon in Image zeichnen

  Alt 25. Okt 2003, 17:30
Achja, wenn's verzerrt sein soll einfach
Image1.Proportional:=true; weglassen.
  Mit Zitat antworten Zitat
Benutzerbild von devnull
devnull

Registriert seit: 5. Okt 2003
362 Beiträge
 
Delphi 7 Personal
 
#4

Re: Icon in Image zeichnen

  Alt 25. Okt 2003, 17:54
Hi Matze,

Delphi-Quellcode:
procedure geticon (x,y,h,w : integer; filename : string);
var
 MyIcon:TIcon;
 icoHandle: HIcon;
 Image1 : TImage;
begin
 Image1 := TImage.Create(Form1);
 Image1.Top := y;
 Image1.Left := x;
 Image1.Parent := Form1;

 MyIcon:=TIcon.Create;
 try
  icoHandle := ExtractIcon(application.handle,pchar(filename), 0);
  MyIcon.Handle := icoHandle;
  Image1.Height := h;
  Image1.Width := w;
    Image1.Picture.Icon := MyIcon;
  Image1.Proportional := true;
 finally
  MyIcon.free;
 end;
end;
Das funzt so nicht.


Wird im Proze Kopf übergeben.
Delphi-Quellcode:
  Image1.Height := 20;
  Image1.Width := 18;

Die Icons in den EXE-Dateien sind größer als 20x18 Pixel !!!! WARUM GEHT DAS NICHT ????


devnull
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#5

Re: Icon in Image zeichnen

  Alt 25. Okt 2003, 18:06
Kannst du mir mal auf die Sprünge helfen? Welche Unit hab ich denn vergessen?

Zitat:
[Fehler] Unit1.pas(28): Undefinierter Bezeichner: 'ExtractIcon'
Edit: den Cool-Smiley hab ich nicht absichtlich da hin gesteckt.
  Mit Zitat antworten Zitat
Benutzerbild von devnull
devnull

Registriert seit: 5. Okt 2003
362 Beiträge
 
Delphi 7 Personal
 
#6

Re: Icon in Image zeichnen

  Alt 25. Okt 2003, 18:10
Hi Matze,

probier es mal mit ShellAPI


devnull
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#7

Re: Icon in Image zeichnen

  Alt 25. Okt 2003, 19:17
Es ist keine schöne Lösung:

Delphi-Quellcode:
//exe auswählen
procedure TForm1.Button1Click(Sender: TObject);
begin
  if OpenDialog1.Execute then
  DrawFile(OpenDialog1.FileName);

  Image1.Picture.SaveToFile(ExtractFilePath(ParamStr(0))+'Icon.bmp');
  Image1.Width:=20;
  Image1.Height:=18;
  Image1.Picture.LoadFromFile(ExtractFilePath(ParamStr(0))+'Icon.bmp');
  Image1.Stretch:=true;
end;

//Icon auslesen:
procedure TForm1.DrawFile(Name: String);
var
  FileInfo: TSHFileInfo;
  ImageListHandle: THandle;
  aIcon: TIcon;
begin
  // Speicher löschen
  FillChar(FileInfo, SizeOf(FileInfo), #0);
  // Handle der Image Liste der ausgewählten Datei ermitteln
  ImageListHandle := SHGetFileInfo(
    PChar(Name), 0, FileInfo, SizeOf(FileInfo),
    // großes Icon verlangen
    SHGFI_ICON or SHGFI_LARGEICON
  );
  try
    // TIcon Objekt erstellen
    aIcon := TIcon.Create;
    try
      // Icon Handle zuweisen
      aIcon.Handle := FileInfo.hIcon;
      // Transparent darstellen
      aIcon.Transparent := True;
      with Image1 do begin
         // Paintbox auf die entsprechende Größe bringen
         Width := aIcon.Width;
         Height := aIcon.Height;
         Application.ProcessMessages;
         // Paintbox löschen
         Canvas.Rectangle(-1, -1, Succ(Width), Succ(Height));
         // Icon darstellen
         Canvas.Draw(0, 0, aIcon);
      end;
    finally
      // TIcon Objekt freigeben
      FreeAndNil(aIcon);
    end;
  finally
    // Icon der Shell wieder freigeben
    DestroyIcon(FileInfo.hIcon);
    // Icon Liste der Shell wieder freigeben
    {ImageList_Destroy(ImageListHandle);}
  end;
end;
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#8

Re: Icon in Image zeichnen

  Alt 25. Okt 2003, 19:20
Achja,
Image1.Proportional:=true; hab ich noch vergessen.
  Mit Zitat antworten Zitat
Benutzerbild von devnull
devnull

Registriert seit: 5. Okt 2003
362 Beiträge
 
Delphi 7 Personal
 
#9

Re: Icon in Image zeichnen

  Alt 25. Okt 2003, 19:44
@ Matze,

noch einmal danke.
wie kann ich diese bilder über einen button legen ??
Bis jetzt werden Sie unter dem button gezeichnet !

devnull
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#10

Re: Icon in Image zeichnen

  Alt 25. Okt 2003, 20:01
Nimm einfach einen SpeedButton oder einen BitBtn, dann bei Glyph das Bildchen angeben.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:14 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz