Autor |
Beitrag |
IhopeonlyReader
Beiträge: 600
Erhaltene Danke: 23
Delphi 7 PE
|
Verfasst: Mi 11.07.12 11:59
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 .
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 Narses: Delphi-Tags hinzugefügt
_________________ Sucht "neueres" Delphi
Wer nicht brauch was er hat, brauch auch nicht was er nicht hat!
|
|
bummi
Beiträge: 1248
Erhaltene Danke: 187
XP - Server 2008R2
D2 - Delphi XE
|
Verfasst: Mi 11.07.12 12:07
www.progdigy.com/ GDI + (free, keine Installation)
TGPGraphics beim Erzeugen Dein Canvas.Handle übergeben
Dem TGPSolidBrush die gewünschte Farbe mit Alphawert übergeben.
_________________ Das Problem liegt üblicherweise zwischen den Ohren H₂♂
DRY DRY KISS
|
|
jaenicke
Beiträge: 19284
Erhaltene Danke: 1742
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Mi 11.07.12 12:21
Mit Bordmitteln könnte man mit TransBlt arbeiten:
msdn.microsoft.com/e...esktop/dd145141.aspx
Oder mit AlphaBlend:
msdn.microsoft.com/e...esktop/dd183351.aspx
Aber zum reinen Zeichnen eignet sich ein passender Brush wie bereits gepostet in der Tat mehr.
|
|
IhopeonlyReader
Beiträge: 600
Erhaltene Danke: 23
Delphi 7 PE
|
Verfasst: 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?
_________________ Sucht "neueres" Delphi
Wer nicht brauch was er hat, brauch auch nicht was er nicht hat!
|
|
bummi
Beiträge: 1248
Erhaltene Danke: 187
XP - Server 2008R2
D2 - Delphi XE
|
Verfasst: 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.
_________________ Das Problem liegt üblicherweise zwischen den Ohren H₂♂
DRY DRY KISS
|
|
Nano-Ware
Beiträge: 394
Erhaltene Danke: 7
|
Verfasst: Mi 11.07.12 16:20
Wenn du Delphi 2009+ hast ist die hier besser -> www.bilsen.com/gdiplus/index.shtml Super Demo und gutes Objekthandling (:
|
|
IhopeonlyReader
Beiträge: 600
Erhaltene Danke: 23
Delphi 7 PE
|
Verfasst: Mi 11.07.12 16:24
Nano-Ware hat folgendes geschrieben : | Wenn du Delphi 2009+ |
Also in meiner Info steht Delphi 7.. also 2007.. 2007>2009 wäre mir neu^^
_________________ Sucht "neueres" Delphi
Wer nicht brauch was er hat, brauch auch nicht was er nicht hat!
|
|
jaenicke
Beiträge: 19284
Erhaltene Danke: 1742
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Mi 11.07.12 16:33
IhopeonlyReader hat folgendes geschrieben : | 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 ( 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...
www.entwickler-ecke.....php?p=623497#623497
IhopeonlyReader hat folgendes geschrieben : | Also in meiner Info steht Delphi 7.. also 2007.. |
Was denn jetzt... Delphi 7 (erschienen 2001 2002) oder Delphi 2007 (erschienen 2007)?
Zuletzt bearbeitet von jaenicke am Mi 11.07.12 16:55, insgesamt 2-mal bearbeitet
|
|
Narses
Beiträge: 10182
Erhaltene Danke: 1255
W10ent
TP3 .. D7pro .. D10.2CE
|
Verfasst: Mi 11.07.12 16:43
Moin!
jaenicke hat folgendes geschrieben : | IhopeonlyReader hat folgendes geschrieben : | Also in meiner Info steht Delphi 7.. also 2007.. | Was denn jetzt... Delphi 7 (erschienen 2001) |
Sorry, aber:
cu
Narses
_________________ There are 10 types of people - those who understand binary and those who don´t.
|
|
IhopeonlyReader
Beiträge: 600
Erhaltene Danke: 23
Delphi 7 PE
|
Verfasst: Mi 11.07.12 17:35
ok dann halt Delphi 2002 aber ich hab Delphi 7
_________________ Sucht "neueres" Delphi
Wer nicht brauch was er hat, brauch auch nicht was er nicht hat!
|
|
IhopeonlyReader
Beiträge: 600
Erhaltene Danke: 23
Delphi 7 PE
|
Verfasst: 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
_________________ Sucht "neueres" Delphi
Wer nicht brauch was er hat, brauch auch nicht was er nicht hat!
|
|
FinnO
Beiträge: 1331
Erhaltene Danke: 123
Mac OSX, Arch
TypeScript (Webstorm), Kotlin, Clojure (IDEA), Golang (VSCode)
|
Verfasst: Do 12.07.12 20:15
Moin,
SCANLINE dürfte sein, was du suchst. Obwohl man schon dazu übergehen müsste dir, wie bummi, zu GDI+ oder OpenGL/DirectX zu raten, wenn du irgendetwas mit hoher Framerate zeichnen möchtest.
LG
|
|
IhopeonlyReader
Beiträge: 600
Erhaltene Danke: 23
Delphi 7 PE
|
Verfasst: 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
_________________ Sucht "neueres" Delphi
Wer nicht brauch was er hat, brauch auch nicht was er nicht hat!
|
|
jaenicke
Beiträge: 19284
Erhaltene Danke: 1742
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: 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?
|
|
IhopeonlyReader
Beiträge: 600
Erhaltene Danke: 23
Delphi 7 PE
|
Verfasst: Sa 14.07.12 13:32
Jop, es passst nichts
Bitte einmal RICHTIGE links reinstellen hier zu Alphablend und TGP Graphics
_________________ Sucht "neueres" Delphi
Wer nicht brauch was er hat, brauch auch nicht was er nicht hat!
|
|
jaenicke
Beiträge: 19284
Erhaltene Danke: 1742
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Sa 14.07.12 13:36
Zuletzt bearbeitet von jaenicke am Sa 14.07.12 13:37, insgesamt 1-mal bearbeitet
|
|
bummi
Beiträge: 1248
Erhaltene Danke: 187
XP - Server 2008R2
D2 - Delphi XE
|
Verfasst: Sa 14.07.12 13:37
mag unhöflich erscheinen, aber wer lesen kann ist im Vorteil, wurde bereits alles geschrieben....
_________________ Das Problem liegt üblicherweise zwischen den Ohren H₂♂
DRY DRY KISS
|
|