Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Neuen Beitrag zur Code-Library hinzufügen (https://www.delphipraxis.net/33-neuen-beitrag-zur-code-library-hinzufuegen/)
-   -   Auf ein Image ein transparentes Image an bestimmter Stelle ablegen (https://www.delphipraxis.net/171783-auf-ein-image-ein-transparentes-image-bestimmter-stelle-ablegen.html)

blondervolker 25. Nov 2012 11:24

Auf ein Image ein transparentes Image an bestimmter Stelle ablegen
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,

ich probiere seit gestern(:-D)krampfhaft,auf ein Image ein transparentes Image an einer bestimmten Stelle abzulegen.Aber es gelingt mir leider nicht.
Hab es mit Drag&Drop versucht,aber dann ist mein Image wieder weg.
Ich seh nur den dusseligen Pfeil,den ich in das Image reingezogen habe.:oops:

Hab mal ein Bild mit drangehangen...

blondervolker 26. Nov 2012 18:51

AW: Auf ein Image ein transparentes Image an bestimmter Stelle ablegen
 
Hab es immer noch nicht geschnallt...:oops:

Sir Rufo 26. Nov 2012 20:49

AW: Auf ein Image ein transparentes Image an bestimmter Stelle ablegen
 
Zitat:

Zitat von blondervolker (Beitrag 1193086)
Hab es immer noch nicht geschnallt...:oops:

Tröste dich, wir haben noch nicht mal verstanden, was du eigentlich willst

Sir Rufo 26. Nov 2012 21:02

AW: Auf ein Image ein transparentes Image an bestimmter Stelle ablegen
 
Und was niemand hier jemals verstehen wird, warum du deine Beiträge immer noch als Vorschlag für die Codelib postest :wall:

Aber wir trösten uns, du weißt es wohl auch nicht :roll:

stahli 26. Nov 2012 21:13

AW: Auf ein Image ein transparentes Image an bestimmter Stelle ablegen
 
Ich habe auch nicht verstanden, was Du wohin ziehst.
Kannst Du ein kurzes Video posten?

blondervolker 27. Nov 2012 12:39

AW: Auf ein Image ein transparentes Image an bestimmter Stelle ablegen
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,

mein Beitrag sollte nicht in die Codelib...:oops:

Hab mal das Miniprojekt drangehangen.

Ich wollte diesen Pfeil(e) als "Markierung" auf dem geladen Bild ablegen.
Dieses markierte Bild wollte ich dann speichern.
Danach ist mein Bild weg,aber der dusseliche Pfeil ist dann im Image.

Hab leider keien Plan...Das ist mein 1.Versuch.Mit Bildbearbeitung hab
ich mich noch nie versucht...:oops:

Sir Rufo 27. Nov 2012 12:48

AW: Auf ein Image ein transparentes Image an bestimmter Stelle ablegen
 
Zitat:

Zitat von blondervolker (Beitrag 1193210)
mein Beitrag sollte nicht in die Codelib...:oops:

Nee, is klar ... einmal ist keinmal, jedoch ...

ab Mai 2012 war eigentlich alles (wieder) gut, aber
15.11.2012 http://www.delphipraxis.net/171613-m...-das-bild.html
21.11.2012 http://www.delphipraxis.net/171713-f...angezeigt.html
22.11.2012 da hat es funktioniert

:roll:

nuclearping 27. Nov 2012 13:03

AW: Auf ein Image ein transparentes Image an bestimmter Stelle ablegen
 
Zitat:

Zitat von blondervolker (Beitrag 1193210)
Hab mal das Miniprojekt drangehangen.

1) Das ist kein Miniprojekt sondern nur eine .pas-Datei, wo man sich das Projekt dazu noch erstellen soll.
2) Das hab ich nicht gemacht, mir aber trotzdem mal die .pas angeschaut. Und mich als erstes mal wieder gefragt: Warum machen die nie 'ne ordentliche Einrückung? Alles an den Rand geklatscht. :stupid:

3) Zum Code:
Delphi-Quellcode:
procedure TForm21.ffnen1Click(Sender: TObject);
begin
opendialog1.Execute;
Image.Picture.LoadFromFile(opendialog1.FileName);
label1.Caption:= InttoStr(Image.Width);
label2.Caption:= InttoStr(Image.Height);
end;

procedure TForm21.FormCreate(Sender: TObject);
VAR Bitmap : TBitmap;
begin
   Bitmap := TBitmap.Create;
   Bitmap.Width := Image.Width;
   Bitmap.Height := Image.Height;
   Image.Picture.Graphic := Bitmap;

   end;
In FormCreate erzeugst du ein TBitmap, weisst es dann Image.Picture.Graphic zu. Und dann in "Öffnen1Click" lädst du ein Bild aus einer Datei und weisst es Image.Picture zu. Also nicht nur, dass du in FormCreate ein Speicherleck erzeugst (TBitmap wird nirgends freigegeben), die ganze Aktion selbst ist auch sinnlos, da du ein leeres Bitmap zuweist, was aber ohnehin irrelevant ist, da es bei Öffnen1Click sowieso wieder überschrieben wird. Oder sehe ich das falsch? :stupid:

4) Ich habe auch nicht so wirklich verstanden, was du vorhast. Aber mein Vorschlag aus der Kristallkugel :glaskugel: ...

Das, was du da machst, klappt so nicht. Ein TImage ist kein Container für mehrere Images, sondern kann immer nur ein einziges TBitmap darstellen. Das was du machen musst, ist dein Zielbild mit dem Quellbild in einer extra Bitmap zu kombinieren und das dann erst im TImage darstellen. Also Bild1 + Bild2 = Bild3 oder als "Code":
Delphi-Quellcode:
Bitmap3.Canvas.Draw(0, 0, Bitmap1);
Bitmap3.Canvas.Draw(0, 0, Bitmap2);
Image.Picture.Assign(Bitmap3);
Um Transparenz musst du dich hier ggf. selbst noch kümmern und statt dem .Canvas.Draw vlt. mit BitBlt oder ähnlichem arbeiten.

blondervolker 27. Nov 2012 17:11

AW: Auf ein Image ein transparentes Image an bestimmter Stelle ablegen
 
Liste der Anhänge anzeigen (Anzahl: 1)
ja den Code habe ich mittlerweile formatiert.:oops:

Hab es anders gemacht und erfüllt den gleichen Zweck.
Delphi-Quellcode:
procedure TForm21.ImageMouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
var
  Bitmap : TBitmap;
begin
  Bitmap := TBitmap.Create;
  try
    ImageList1.GetBitmap(0, Bitmap);
    Image.Canvas.Draw(X,Y,Bitmap);
    finally
    FreeAndNil(Bitmap);
  end;
end;
Wie aber bekommt man ein Transparenten Pfeil hin?
Hab in der Imagelist gebastelt,aber es geht nicht?
Siehe Abbildung...

DeddyH 27. Nov 2012 17:38

AW: Auf ein Image ein transparentes Image an bestimmter Stelle ablegen
 
http://www.delphiforfun.org/programs...askdrawing.htm
Oder aber TBitmap32 und damit echte Transparenz verwenden oder auf ein anderes Bildformat ausweichen, das Transparenz unterstützt wie z.B. PNG.

stahli 27. Nov 2012 18:37

AW: Auf ein Image ein transparentes Image an bestimmter Stelle ablegen
 
Nur mal so als Idee:

Man kann ja für die Pfeile eigene Image-Instanzen erzeugen und über ein vorhandenes Image legen. Dann ließen die sich auch nachträglich noch verschieben.

VIELLEICHT lässt sich zum Schluss über das Ganze dann eine GraphicBox legen und der Inhalt in ein Bild kopieren.
Ich bin nicht sicher, aber versuchen könnte man es.

Alternativ kann man (etwas mühsamer) die Bilddaten in ein Bitmap kopieren und bei den Pfeilen die transparenten Bitmaps aus lassen.

So würde man zumindest nicht hart ein Originalbild ändern.

blondervolker 27. Nov 2012 18:41

AW: Auf ein Image ein transparentes Image an bestimmter Stelle ablegen
 
Ich versuch es mal.Mal sehen ob es klappt.

Ersteinmal Danke für die Vorschläge.:thumb:

nuclearping 27. Nov 2012 19:19

AW: Auf ein Image ein transparentes Image an bestimmter Stelle ablegen
 
Zitat:

Zitat von blondervolker (Beitrag 1193264)
Hab es anders gemacht und erfüllt den gleichen Zweck.

Ja, vom Prinzip her ist es fast das Selbe. Nur mit dem Unterschied, dass du gleich den Canvas vom TImage direkt "versaust", statt Landkarte und Pfeile in einem "Zwischenpuffer"-Bitmap zusammenzukleben und dann erst in das Image zu kopieren. :mrgreen:

Zitat:

Zitat von blondervolker (Beitrag 1193264)
Wie aber bekommt man ein Transparenten Pfeil hin?
Hab in der Imagelist gebastelt,aber es geht nicht?
Siehe Abbildung...

Angenommen wir nehmen den Weg über einen Zwischenpuffer, dann versuche mal
Delphi-Quellcode:
// Initialisierung, im (Form)Create zB
BitmapLandkarte := TBitmap.Create;
BitmapPfeil := TBitmap.Create;
BitmapPuffer := TBitmap.Create;
try
  BitmapLandkarte.LoadFromFile(...);
  BitmapPfeil.LoadFromFile(...);
except
  // Fehler
end;

// Bild zusammensetzen
BitmapPuffer.Assign(BitmapLandkarte);
TransparentBlt(BitmapPuffer.Handle, PfeilX, PfeilY, PfeilBreite, PfeilHöhe, BitmapPfeil.Handle, 0, 0, PfeilBreite, PfeilHöhe, RGB($FF, $FF, $FF)); // RGB FF FF FF = Weiss
Image.Assign(BitmapPuffer);

// Am Ende freigeben (im Destroy)
FreeAndNil(BitmapLandkarte);
FreeAndNil(BitmapPfeil);
FreeAndNil(BitmapPuffer);

Blup 28. Nov 2012 08:48

AW: Auf ein Image ein transparentes Image an bestimmter Stelle ablegen
 
Normalerweise sollte das schon reichen:
Delphi-Quellcode:
begin
  ImageList1.Draw(Image.Canvas, X, Y, 0);
end;
Das er sich damit das Orginalbild versaut ist eine ganz andere Frage...

blondervolker 28. Nov 2012 09:44

AW: Auf ein Image ein transparentes Image an bestimmter Stelle ablegen
 
Hallo,

das funktioniert auch nicht.Das sieht immer noch so aus wie vorher.:?

DeddyH 28. Nov 2012 09:47

AW: Auf ein Image ein transparentes Image an bestimmter Stelle ablegen
 
Hast Du es auch schon mit der Maske versucht? Das sieht zwar je nach Form nicht allzu hübsch aus, sollte aber im Wesentlichen funktionieren.

blondervolker 28. Nov 2012 09:49

AW: Auf ein Image ein transparentes Image an bestimmter Stelle ablegen
 
Hab ich kein plan wie das geht...:oops:

DeddyH 28. Nov 2012 09:52

AW: Auf ein Image ein transparentes Image an bestimmter Stelle ablegen
 
Das wird doch auf der von mir verlinkten Seite genau erklärt, ganz unten gibt es sogar ein Demoprojekt zum Download *koppschüttel*

blondervolker 28. Nov 2012 09:55

AW: Auf ein Image ein transparentes Image an bestimmter Stelle ablegen
 
Das guck ich mir gerade an.:-D


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:25 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