AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Grafikfehler verhindern
Thema durchsuchen
Ansicht
Themen-Optionen

Grafikfehler verhindern

Ein Thema von StefanW · begonnen am 11. Mai 2006 · letzter Beitrag vom 12. Mai 2006
Antwort Antwort
Seite 1 von 2  1 2      
StefanW

Registriert seit: 22. Okt 2004
Ort: Treuen
25 Beiträge
 
Delphi 7 Enterprise
 
#1

Grafikfehler verhindern

  Alt 11. Mai 2006, 10:27
Hi DP,

ich bin momentan dabei für ein Programm eine schönere Oberfläche zu gestalten, und da das mit einer PNG (und ihrem Alphakanal) so schön geht hab ich jedenfalls eine "Gezeichnet". Sieht auch wunderbar aus, allerdings entstehen solche bescheidenen Grafikfehler, wenn sich ein anderes Fenster davorlegt und sich danach verschiebt oder minimiert.

Ich hab mal die Oberfläche und ein Screenshot des Grafikfehlers angehängt...

vllt hat ja einer von euch eine Lösung für das Problem... ich beiß mir da momentan die Zähne drann aus.

Tschau Stefan
Miniaturansicht angehängter Grafiken
erster_versuch_101.png   screen_439.jpg  
Stefan W.
  Mit Zitat antworten Zitat
OregonGhost

Registriert seit: 8. Jun 2002
Ort: Lübeck
1.216 Beiträge
 
Delphi 3 Professional
 
#2

Re: Grafikfehler verhindern

  Alt 11. Mai 2006, 10:32
Wenn ich das richtig sehe, ist dein Problem, dass andere Fenster durch den äußeren "weißen" Rand der Form durchscheinen, oder? Das liegt daran, dass das Bild an der Stelle transparent ist. Alpha-Wert auf 255 bzw. 1 setzen für den Rand
Oregon Ghost
---
Wenn NULL besonders groß ist, ist es fast schon wie ein bisschen eins.
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: Grafikfehler verhindern

  Alt 11. Mai 2006, 10:41
Zitat von OregonGhost:
Wenn ich das richtig sehe, ist dein Problem, dass andere Fenster durch den äußeren "weißen" Rand der Form durchscheinen, oder?
Das Problem ist sicher, dass, wenn ein Fenster über seiner Anwendung ist und minimiert wird, eine Art "Screenshot" dieses Fensters auf seiner grafischen Oberfläsche zurückbleibt.

Beim normalen Canvas würde ich es im OnPaint neu zeichnen, doch ob das mit PNG bei dir geht, kann ich dir nicht sagen.
  Mit Zitat antworten Zitat
StefanW

Registriert seit: 22. Okt 2004
Ort: Treuen
25 Beiträge
 
Delphi 7 Enterprise
 
#4

Re: Grafikfehler verhindern

  Alt 11. Mai 2006, 10:44
und wie mach ich das? (mal blöd gefragt) ich hab das Form mittels Form1.Brush.Style:=bsClear; transparent gemacht. wenn ich das per Alphablend vom Form mache dann verschwindet doch auch mein PNG auf dem Form... und in der PNG den Wert setzen bringt auch nix da (wie man im Schatten sieht)
Stefan W.
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#5

Re: Grafikfehler verhindern

  Alt 11. Mai 2006, 10:47
Hi,

du könntest folgendes (zusätzlich?) eingeben, ich weiß nicht ob's funktioniert, aber erste Tests waren positiv. ^^

Form1.Canvas.Brush.Style := bsClear;
  Mit Zitat antworten Zitat
StefanW

Registriert seit: 22. Okt 2004
Ort: Treuen
25 Beiträge
 
Delphi 7 Enterprise
 
#6

Re: Grafikfehler verhindern

  Alt 11. Mai 2006, 10:53
leider nein, wie gesagt ziemlich knifflig
Miniaturansicht angehängter Grafiken
screen_100.jpg  
Stefan W.
  Mit Zitat antworten Zitat
OregonGhost

Registriert seit: 8. Jun 2002
Ort: Lübeck
1.216 Beiträge
 
Delphi 3 Professional
 
#7

Re: Grafikfehler verhindern

  Alt 11. Mai 2006, 11:01
Ah, jetzt seh ich erst, was gemeint war.
bsClear bringt aber doch nicht wirklich was, oder? Das bedeutet doch nur, dass "nichts" gezeichnet wird. Es bedeutet nicht, dass der Hintergrund durchscheint. Das heißt, das, was einmal im Fenster ist, bleibt auch dort, bis es wieder richtig überzeichnet wird.

Das, was du vor hast, erfordert doch ein LayeredWindow, oder?
Wenn man AlphaBlend = true macht, müsste das Fenster schon Layered sein. Dann müsstest du, falls Delphi von sich aus keine Möglichkeit dazu bietet, mit der Funktion UpdateLayeredWindow deine PNG-Grafik als Quelle für die Grafik des Fensters einsetzen. Kann aber sein, dass du das Fenster dann bei jeder Bewegung etc. mit UpdateLayeredWindow aktualisieren musst.
UpdateLayeredWindow
Oregon Ghost
---
Wenn NULL besonders groß ist, ist es fast schon wie ein bisschen eins.
  Mit Zitat antworten Zitat
StefanW

Registriert seit: 22. Okt 2004
Ort: Treuen
25 Beiträge
 
Delphi 7 Enterprise
 
#8

Re: Grafikfehler verhindern

  Alt 11. Mai 2006, 11:43
ah das erinnert mich die Unit hier da hat alles wunderbar geklappt sah super aus, der Fehler war weg! allerdings waren auch alle Komponenten auf dem Form mit verschwunden, d.h. sie waren schon noch da man konnte sie auch anklicken nur wurden sie mit der PNG übermahlt und kamen auch nicht mehr zum vorschein. kann da vllt mal wer kucken ob man da nicht mal noch was abändern kann?
ich weiß sonst auch nicht weiter
Stefan W.
  Mit Zitat antworten Zitat
Benutzerbild von turboPASCAL
turboPASCAL

Registriert seit: 8. Mai 2005
Ort: Sondershausen
4.274 Beiträge
 
Delphi 6 Personal
 
#9

Re: Grafikfehler verhindern

  Alt 11. Mai 2006, 12:14
Khabarakh hat hier ein Beispiel aufgezeigt wie das auf einfache weise mit PNG-Images funktioniert.

Leider besteht auch in diesem Beispiel das Problen mit den Controls auf einer Form.
Bis jetzt bin ich auch noch nicht auf eine Lösung gekommen. (Controls neu zeichnen lassen ?!)

Matti
Meine Software-Projekte - Homepage - Grüße vom Rüsselmops -Mops Mopser
  Mit Zitat antworten Zitat
StefanW

Registriert seit: 22. Okt 2004
Ort: Treuen
25 Beiträge
 
Delphi 7 Enterprise
 
#10

Re: Grafikfehler verhindern

  Alt 11. Mai 2006, 12:23
das gleiche mach die Unit aus dem DF und ich komm nicht weiter... schade eigentlich. bei Miranda (so nem Chat Programm) gehts ja auch... nur leider versteh ich den C code nicht sonst hätte ich da mal versucht was zu übersetzen... aber ich weis ja nicht mal wo das da steht. (den Code gibs jedenfalls frei soweit ich weis)

Edit: ich seh grad mein Samurize kann das auch. und ich dacht das war auch Open
Stefan W.
  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 17:54 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