AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Transparentfarbe aus Pixelposition im Bild
Thema durchsuchen
Ansicht
Themen-Optionen

Transparentfarbe aus Pixelposition im Bild

Ein Thema von Moony · begonnen am 1. Aug 2006 · letzter Beitrag vom 2. Aug 2006
Antwort Antwort
Seite 1 von 2  1 2      
Moony

Registriert seit: 29. Jul 2003
Ort: Essen
454 Beiträge
 
Delphi 2010 Professional
 
#1

Transparentfarbe aus Pixelposition im Bild

  Alt 1. Aug 2006, 08:47
Hallo zusammen,

wie schon der Titel besagt, möchte ich meine Transparentfarbe auf das Bld abstimmen. Dafür benötige ich die Farbe des Bildes von von einer bestimmten Position. Dies habe ich folgendermaßen versucht:

TImage.Picture.Bitmap.TransparentColor := TImage.Picture.Bitmap.Canvas.Pixels[1,1]; Ich möchte also nach diesen Angaben den oberen, linken Pixel als Transparentfarbe verwenden, deshalb die Angabe von 1,1. Leider liefert mir die Pixels-Funktion den Wert -1 zurück.

Ich hoffe mir kann da jemand weiterhelfen.

Gruß, Moony
Ich weiß, daß ich nichts weiß! Sokrates
  Mit Zitat antworten Zitat
Benutzerbild von freak4fun
freak4fun

Registriert seit: 22. Sep 2004
Ort: Hannover
1.807 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#2

Re: Transparentfarbe aus Pixelposition im Bild

  Alt 1. Aug 2006, 08:55
Image1.Picture.Bitmap.TransparentColor := Image1.Picture.Bitmap.Canvas.Pixels[1,1]; Viellleicht so? Also mit dem erstellten Objekt.
Christian
IT: Schließen Sie bitte das Fenster. User: Die Tür auch?
i++; // zaehler i um 1 erhoehen
  Mit Zitat antworten Zitat
Moony

Registriert seit: 29. Jul 2003
Ort: Essen
454 Beiträge
 
Delphi 2010 Professional
 
#3

Re: Transparentfarbe aus Pixelposition im Bild

  Alt 1. Aug 2006, 08:58
Damit mache ich das auch....Ich mache das ja nicht mit dem Objekttyp sondern mit dem erstellten Objekt.
Ich weiß, daß ich nichts weiß! Sokrates
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.151 Beiträge
 
Delphi 12 Athens
 
#4

Re: Transparentfarbe aus Pixelposition im Bild

  Alt 1. Aug 2006, 09:18
eventuell so ... vorallem tmFixed ist wichtig
Delphi-Quellcode:
// kann man auch im OI instellen
Image1.Transparent := True;
// wird wohl auch gleich über das Image mit umgestllt
Image1.Picture.Bitmap.Transparent := True;
// wichtig, wenn du selber die farbe bestimmen willst
Image1.Picture.Bitmap.TransparentMode := tmFixed;
// tja, halt deine Farbe ^^
Image1.Picture.Bitmap.TransparentColor := ...;
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Moony

Registriert seit: 29. Jul 2003
Ort: Essen
454 Beiträge
 
Delphi 2010 Professional
 
#5

Re: Transparentfarbe aus Pixelposition im Bild

  Alt 1. Aug 2006, 09:23
Das mit dem Tranparentmode hab ich auch schon probiert, wobei das eigentlich überflüssig ist, da sobald eine Farbe festgelegt wird sich der Mode automatisch auf tmFixed ändert.

Was aber für mich wichtig ist, ist die Farbe von einem Pixel im Bild zu bekommen und dann zu setzen. Das heißt, ich möchte zum Bespiel aus dem Bld das geladen ist die Farbe des Pixels in der 2. Reihe, 5. Pixel erhalten. deshalb ja die Pixels-Funktion. aber diese liefert mir den Wert -1 zurück.
Ich weiß, daß ich nichts weiß! Sokrates
  Mit Zitat antworten Zitat
Benutzerbild von Flocke
Flocke

Registriert seit: 9. Jun 2005
Ort: Unna
1.172 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#6

Re: Transparentfarbe aus Pixelposition im Bild

  Alt 1. Aug 2006, 09:29
Links oben ist Canvas.Pixels[0,0] und nicht [1,1]. Vielleicht liegt dein Bildpunkt nicht in der Bitmap?
Volker
Besucht meine Garage
Aktuell: RtfLabel 1.3d, PrintToFile 1.4
  Mit Zitat antworten Zitat
Benutzerbild von DGL-luke
DGL-luke

Registriert seit: 1. Apr 2005
Ort: Bad Tölz
4.149 Beiträge
 
Delphi 2006 Professional
 
#7

Re: Transparentfarbe aus Pixelposition im Bild

  Alt 1. Aug 2006, 09:30
Pixels ist 0-indexed! Evtl. schlägst du ja erstmal auf ein 1x1-Bild, was natürlich nicht hinhaut... ansonsten sollte es eigentlich nie Fehlercodes zurückgeben, sondern Exceptions raisen...

Zitat:
Beachten Sie, dass die Eigenschaft Pixels nicht von jedem Gerätekontext unterstützt wird. Wenn der vorliegende Gerätekontext die Eigenschaft Pixels nicht unterstützt, gibt ein Lesezugriff den Wert -1 zurück. Die Zuweisung eines Wertes bleibt ohne Wirkung.
Ist dein Canvas evtl. gar nicht an einen Kontext gebunden?
Lukas Erlacher
Suche Grafiktablett. Spenden/Gebrauchtangebote willkommen.
Gotteskrieger gesucht!
For it is the chief characteristic of the religion of science that it works. - Isaac Asimov, Foundation I, Buch 1
  Mit Zitat antworten Zitat
Benutzerbild von Flocke
Flocke

Registriert seit: 9. Jun 2005
Ort: Unna
1.172 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#8

Re: Transparentfarbe aus Pixelposition im Bild

  Alt 1. Aug 2006, 09:34
Zitat von DGL-luke:
... ansonsten sollte es eigentlich nie Fehlercodes zurückgeben, sondern Exceptions raisen...
GetPixel ruft einfach Windows.GetPixel auf, ohne jede Fehlerprüfung.

Zitat von DGL-luke:
Ist dein Canvas evtl. gar nicht an einen Kontext gebunden?
Eine TBitmap benutzt an sich einen Memory-DC, der sollte das können.

P.S. @Moony: schöne Grüße aus Unna nach Kamen.
Volker
Besucht meine Garage
Aktuell: RtfLabel 1.3d, PrintToFile 1.4
  Mit Zitat antworten Zitat
Moony

Registriert seit: 29. Jul 2003
Ort: Essen
454 Beiträge
 
Delphi 2010 Professional
 
#9

Re: Transparentfarbe aus Pixelposition im Bild

  Alt 1. Aug 2006, 09:57
@DGL-luke: An welchen Kontext sollte es denn gebunden sein. Ich rufe diese funktion über ein Imageobject auf. Ich will doch lediglich die Farbe eines bestimmten Pixels innerhalb des geladenen Objekts.

@Flocke: Grüße zurück.

Des Weiteren habe ich festgestellt, dass genau das gleiche Bild mit den fast gleichen Pixeleigenschaften überhaupt nicht berührt wird von der Transparenz!
Ich weiß, daß ich nichts weiß! Sokrates
  Mit Zitat antworten Zitat
mimi

Registriert seit: 1. Dez 2002
Ort: Oldenburg(Oldenburg)
2.008 Beiträge
 
FreePascal / Lazarus
 
#10

Re: Transparentfarbe aus Pixelposition im Bild

  Alt 1. Aug 2006, 10:40
ich habe genau das gleich versucht und es hat mich tage gekostet um festzustellen das es an Tranzparentcolor liegt weil ich hatten ihn so zugewiesen wie du auch doch das klappte nicht.

Ich meine es liegt dran das die farben nicht 100%ig überein stimmen du musst irgenwie eine Tolleranz einbauen.
ich habe es so gelöst versuche mal folgenden code:

Delphi-Quellcode:
function collision(Bild1, Bild2:TBitMap; x1,y1,x2,y2:Integer):Boolean;
var
  sx,sy:Integer;
  test:Boolean;
  r1,r2,r3:TRect;
begin
  // Position vom zweiten objekt berechnen
  sx:=x2-x1; sy:=y2-y1;
  test:=False;
  r2.Left:=x2; r2.Top:=y2; r2.Right:=x2+bild2.Width; r2.Bottom:=y2+bild2.Height;
  r1.Left:=x1; r1.Top:=y1; r1.Right:=x1+bild1.Width; r1.Bottom:=y1+bild1.Height;
  if IntersectRect(r3,r1,r2) = True then begin
    if Bild1.Canvas.Pixels[sx,sy] = Bild1.Canvas.Pixels[1,1] then test:=False
    else test:=True;
  end;
  result:=Test;
end; // Collsion
das problem dabei ist jetzt nur noch das wenn du von oben kommst fehler kommen evlt. bekommst du eine lösung hin oder hast eine idee wie es gelöst werden könnte
Michael Springwald
MFG
Michael Springwald,
Bitte nur Deutsche Links angeben Danke (benutzte überwiegend Lazarus)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 13:16 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