![]() |
Re: Bitmap32 auf ZielBitmap32 malen
Zitat:
Zitat:
|
Re: Bitmap32 auf ZielBitmap32 malen
Liste der Anhänge anzeigen (Anzahl: 1)
Ich häng mal :-)
Obwohl ich schon mal mit dmBlend sowie Combinemode oder so, mein ich mich zu erinnern, rumgefummelt hab, was auch nicht geholfen hatte, jedenfalls nicht bei mir :-( Viele Grüße Marc |
Re: Bitmap32 auf ZielBitmap32 malen
Es wäre ja interessant zu ergründen, wann dieses Pixel erscheint. Testhalber würde ich zunächst die konvertierten TBitmap32 (vor dem Skalieren) einmal zusammenfügen und als Datei speichern. Kommt es da schon, dürfte es bereits am Konvertieren liegen.
|
Re: Bitmap32 auf ZielBitmap32 malen
Zitat:
In einen anderen Forum sprach jemand von einem ähnlichem Problem ich zitiere mal: Zitat:
Zitat:
|
Re: Bitmap32 auf ZielBitmap32 malen
Zu aller erst: Deine Variable "Alpha" ist nicht initialisiert, wodurch du nicht sicher sein kannst ob du nun das PNG mit oder ohne Alphakanal liest!
Dann sollte der DrawMode des Bitmaps auf dmBlend gesetzt werden, welches als Quelle dient. Also entweder das, das in der Methode Draw() als Parameter benutzt wird, bzw. das dessen Methode DrawTo() aufgerufen wird. Im Zweifel einfach bei allen. Das nächste Problem ist, dass dein Alphakanal durch das Strecken ebenfalls gestreckt wird, und somit "verwischt", so dass du nachher in den Ecken nicht mehr den Aplhawert 0 hast, sondern irgendetwas leicht höheres. Andere Stretchfilter als Mitchell könnten hier stabiliere Ergebnisse liefern, aber du wirst vermutlich immer einen dunklen Schimmer in den Ecken zurück behalten. Und zu guter letzt scheint die G32 beim Zeichnen auf nicht-G32 Canvases den ALphawert nicht korrekt zu berücksichtigen. In dem Fall kann es evtl. helfen den DrawMode dmCustom zu benutzen, und das OnPixelCombine Event selbst zu implementieren. Weil in den Pixeldaten der Bitmaps steht der Alphakanal drin, er wird offenbar nur in diesem Fall nicht beachtet. Aber egal wie du es anstellst, wirst du mit dieser Methode immer Probleme mit dem verwischen des Aplhakanals zu kämpfen haben, ausser du benutzt den NearestNeighbor Filter der nur leider reichlich hässlich ist =) Ich würde dir daher emfehlen den Verlauf incl. des Alphakanals zur Laufzeit in Delphi zu zeichnen, und zwar in genau der gebrauchten Größe. Das musst du ja zudem nur ein einziges Mal machen wenn sich die größe der Listbox Items verändert, und kannst es dann wie jetzt auch aus einem Puffer-Bitmap immer wieder schnell zeichnen. (Dafür muss nur das Problem mit dem Zeichnen mit Alpha gelöst werden (dmCustom).) |
Re: Bitmap32 auf ZielBitmap32 malen
Öhm ja,
da trifft es sich doch wieder extrem gut, dass ich davon 0 in worten null Ahnung hab :-( Kannst Du mir für deine letzten Worte: Zitat:
Viele Grüsse Marc |
Re: Bitmap32 auf ZielBitmap32 malen
Na, Du erstellst Dir eine Bitmap im Speicher und zeichnest darauf. OnPaint zeichnest Du diese Bitmap nun "in einem Rutsch" auf den Zielcanvas. Wenn sich dessen Größe ändert (und das ist auch nur dann notwendig), erstellst Du diese Bitmap in der passenden Größe neu. Dasselbe Prinzip habe ich z.B. bei meinem
![]() |
Re: Bitmap32 auf ZielBitmap32 malen
Zitat:
Abgesehen davon ich hab grad die beiden Ecken nicht gestretched trotzdem das gleiche, es sieht also so aus: Zitat:
Btw. Sagmal dann kennst Du dich doch bestimmt super mit GDI+ aus oder? Wegen deinem runden Button, ich meine ich muss ja nicht Gr32 nehmen? Ginge das nicht auch so, dass man sich über die GDI erstmal sowas wie ein RoundRect baut mit einer bestimmten Rahmanfarbe halt oder man füllt es halt mit entsprechender Farbe, dann lässt man nen Pixel frei, und zeichnet darin dann per GDI+ den Gradient? Viel mir grad so ein weil mich zwingt ja keiner ne Grafik zu nehmen ich dachte nur es wäre vielleicht leichter?! |
Re: Bitmap32 auf ZielBitmap32 malen
Super auskennen wäre nun wirklich zuviel gesagt. Ich würde Dir empfehlen, Dir aus meinem Button-Thread den kompletten Source zu laden, da sind reichlich Beispiele dabei (nicht von mir). Die hatte ich mir auch ausgiebig angesehen und dann mit den Möglichkeiten herumgespielt.
|
Re: Bitmap32 auf ZielBitmap32 malen
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:23 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz