Entwickler-Ecke

Multimedia / Grafik - Durchsichtige Farben


IhopeonlyReader - Mi 11.07.12 11:59
Titel: Durchsichtige Farben
Guten Tag,
ich habe ein Problem bezüglich der Transparenz meiner Canvas Farbe...
Ich würde gerne ein Kreis über ein Bild ziehen, der den darunterliegenden Farben ein rotstich verleiht. Es soll also das, was unter dem Kreis ist noch sichtbar sein.
Die Tranzparenz, die ich bei der Form etc. einstelle sorgt leider immer nur dafür, dass ich dann druch die Form durchgucken kann, und dann seh ich nur mein Desktop :D.
Beispiel:

Delphi-Quelltext
1:
2:
3:
4:
Canvas.Rectangle(X,Y,X+100,Y+100);
Canvas.Brush.Color := canvas.pixel[x,y] -1;
canvas.Pen.Color := Canvas.Brush.Color;
Canvas.Ellipse(X,Y,X+100,Y+100);

Das Canvas.Pixel, hatte ich mal irgendwo gelesen, allerdings weiß ich gar nichts darüber und es sucht ja nur die Farbe dieses einen Pixels heraus... Soll ich jetz jeden Punkt des Kreises errechnen und dann jedes mal vor dem Zeichnen dieses Punktes die Farbe abfragem , die sich jetzt dort befindet und dann diese ändern?Ich denke, dass es funktionieren würde, jedoch sehr umständlcih wäre und sehr viel Zeit in anspruch nehmen würde... (zu viel Zeit)
Kennt jemand eine "schnelle" Methode dafür?

Moderiert von user profile iconNarses: Delphi-Tags hinzugefügt


bummi - Mi 11.07.12 12:07

http://www.progdigy.com/ GDI + (free, keine Installation)

TGPGraphics beim Erzeugen Dein Canvas.Handle übergeben
Dem TGPSolidBrush die gewünschte Farbe mit Alphawert übergeben.


jaenicke - Mi 11.07.12 12:21

Mit Bordmitteln könnte man mit TransBlt arbeiten:
http://msdn.microsoft.com/en-us/library/windows/desktop/dd145141.aspx
Oder mit AlphaBlend:
http://msdn.microsoft.com/en-us/library/windows/desktop/dd183351.aspx

Aber zum reinen Zeichnen eignet sich ein passender Brush wie bereits gepostet in der Tat mehr.


IhopeonlyReader - Mi 11.07.12 15:22

Ok, sagen wir so:
Wozu was downloaden, wenn man das auch selbst kann?!
-> extra was downloaden und komponenten etc benutzen wäre sinnlos

das mit Alpha-Blend habe ich leider nicht verstand, jaenicke kannst du das bitte genauer erklären?


bummi - Mi 11.07.12 16:12

Du musst ja keine Komponenten herunterladen und installieren, sondern nur 3 Units in Dein Projekt einbinden.
Da ist ein Stapel Demos dabei der den Umfang der Möglichkeiten anreißt.

So das war dann aber mein letzter Post zum Thema GDI+, bis ich explizit gefragt werde.


Nano-Ware - Mi 11.07.12 16:20

Wenn du Delphi 2009+ hast ist die hier besser -> http://www.bilsen.com/gdiplus/index.shtml Super Demo und gutes Objekthandling (:


IhopeonlyReader - Mi 11.07.12 16:24

user profile iconNano-Ware hat folgendes geschrieben Zum zitierten Posting springen:
Wenn du Delphi 2009+

Also in meiner Info steht Delphi 7.. also 2007.. 2007>2009 wäre mir neu^^


jaenicke - Mi 11.07.12 16:33

user profile iconIhopeonlyReader hat folgendes geschrieben Zum zitierten Posting springen:
das mit Alpha-Blend habe ich leider nicht verstand, jaenicke kannst du das bitte genauer erklären?
Wenn du mal im Forum danach gesucht hättest (Suche in: Delphi-Forum ALPHABLEND), hättest du zwar nicht besonders viele Threads gefunden, in denen aber dafür Beispiele...
Unter anderem in dem, den ich dazu eröffnet hatte...
http://www.entwickler-ecke.de/viewtopic.php?p=623497#623497

user profile iconIhopeonlyReader hat folgendes geschrieben Zum zitierten Posting springen:
Also in meiner Info steht Delphi 7.. also 2007..
Was denn jetzt... Delphi 7 (erschienen 2001 2002) oder Delphi 2007 (erschienen 2007)? :gruebel:


Narses - Mi 11.07.12 16:43

Moin!

user profile iconjaenicke hat folgendes geschrieben Zum zitierten Posting springen:
user profile iconIhopeonlyReader hat folgendes geschrieben Zum zitierten Posting springen:
Also in meiner Info steht Delphi 7.. also 2007..
Was denn jetzt... Delphi 7 (erschienen 2001)
Sorry, aber:
Der Wikipedia-Artikel dazu [http://de.wikipedia.org/wiki/Embarcadero_Delphi#Delphi_7_.28Codename:_Aurora.29] hat folgendes geschrieben:
Delphi 7 wurde im August 2002 veröffentlicht.

cu
Narses


IhopeonlyReader - Mi 11.07.12 17:35

ok dann halt Delphi 2002 :D aber ich hab Delphi 7


IhopeonlyReader - Do 12.07.12 19:36

Ok... das genaue Problem liegt bei
Canvas.Pixels[X,Y] := Canvas.Pixels[C,Y]+100;
Die Farbe ist perfect, die Form die ich mit dem Satz des Pythagoras errechne ist auch perfekt !.. also ein perfekter kreis in der perfekten (durchsichtigen, die die drunterliegenden Farben leicht verändert) Frabe...

Das Problem:
Ich berechne diesen Kreis alle 20ms neu !
Das führt zu Extremen laggs... wenn der Kreis ein Radius von 300 hat, dann brauch er ca 500ms um den kompletten Kreis zu zeichnen! Das Flackern fange ich zum Glück komplett ab, aber das laggen wird wie gesagt durch das
Canvas.Pixels hervorgerufen. Es fragt die Farbe des Pixels zu langsam ab...
Kennt ihr irgendwelche besseren Methoden als Canvas.Pixels?
Ich würde gerne nur einen neuen Einzeiler benutzen (bis 10Zeiler), da ich denke, dass ein ü10 Zeiler ebenfalls zu lange brauchen würde.. also bitte nennt mir einen Befehl, der in ca 18 ms die Farbe von bis zu 9000 Pixeln berechnen kann


FinnO - Do 12.07.12 20:15

Moin,

SCANLINE [http://docwiki.embarcadero.com/Libraries/en/FMX.Types.TBitmap.ScanLine] dürfte sein, was du suchst. Obwohl man schon dazu übergehen müsste dir, wie user profile iconbummi, zu GDI+ oder OpenGL/DirectX zu raten, wenn du irgendetwas mit hoher Framerate zeichnen möchtest.

LG


IhopeonlyReader - Sa 14.07.12 12:12

ok, ich habe mir jetzt das Package installiert und besitze nun die Komponente Tchromium.

Wie ich diese einsetze, weiß ich leider nicht.. ebenfalls kommt immer wieder eine Fehlermeldung beim startren..
Ich denke ich muss das Chromium am anfang initialisieren oder so.. deshalb würde ich euch bitten mal ein Beipsiel (simplester Art) hier zu posten :)


jaenicke - Sa 14.07.12 13:20

TChromium? Das hört sich nach dem Chromium-Webbrowser-Control an. Was hat das jetzt nicht dem Thema zu tun? :gruebel:


IhopeonlyReader - Sa 14.07.12 13:32

Jop, es passst nichts :D
Bitte einmal RICHTIGE links reinstellen hier zu Alphablend und TGP Graphics


jaenicke - Sa 14.07.12 13:36

user profile iconIhopeonlyReader hat folgendes geschrieben Zum zitierten Posting springen:
Jop, es passst nichts :D
Bitte einmal RICHTIGE links reinstellen hier zu Alphablend und TGP Graphics
Richtig lesen hilft... :roll: :autsch:
user profile iconbummi hat folgendes geschrieben Zum zitierten Posting springen:
http://www.progdigy.com/ GDI + (free, keine Installation)
Und wenn du unter den Downloads wie da steht auf "GDI plus API" klickst, bekommst du auch GDI+...

Oder du nimmst die genannte Alternative:
user profile iconNano-Ware hat folgendes geschrieben Zum zitierten Posting springen:
Wenn du Delphi 2009+ hast ist die hier besser -> http://www.bilsen.com/gdiplus/index.shtml Super Demo und gutes Objekthandling (:


bummi - Sa 14.07.12 13:37

mag unhöflich erscheinen, aber wer lesen kann ist im Vorteil, wurde bereits alles geschrieben....