AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Probleme mit XOR-Zeichenmodus

Probleme mit XOR-Zeichenmodus

Ein Thema von Mysterio08 · begonnen am 15. Aug 2010 · letzter Beitrag vom 16. Aug 2010
Antwort Antwort
Benutzerbild von turboPASCAL
turboPASCAL

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

AW: Probleme mit XOR-Zeichenmodus

  Alt 15. Aug 2010, 16:15
Dem stimme ich zu.

Nützlich ist so etwas für zB. Floating Rectangles, so ein Auswahlrechteckdingens. ( zB. in Mandelbrötchen )
Matti
Meine Software-Projekte - Homepage - Grüße vom Rüsselmops -Mops Mopser
  Mit Zitat antworten Zitat
Mysterio08

Registriert seit: 11. Jan 2009
142 Beiträge
 
#2

AW: Probleme mit XOR-Zeichenmodus

  Alt 15. Aug 2010, 16:29
Das man sich damit oft Ärger einhandelt, habe ich schon gemerkt...

Gibt es aber generell einen Zeichenmodus, bei welchem ich eine "alte" Grafik nicht wieder mit der Hintergrundfarbe einfärben muss? Angenommen, ich habe einen Verlauf auf einem TImage gezeichnet und möchte dann nur einen Kreis "rauslöschen" (ich habe mir TheMandelBrot mal angeschaut, aber da kommt das nicht zum Tragen, wenn ich das richtig beurteile).
  Mit Zitat antworten Zitat
Medium

Registriert seit: 23. Jan 2008
3.689 Beiträge
 
Delphi 2007 Enterprise
 
#3

AW: Probleme mit XOR-Zeichenmodus

  Alt 15. Aug 2010, 16:44
Der Gold-Standard ist es, den Hintergrund als separates Bitmap vorzuhalten, diesen immer wieder neu auf die Anzeige zu kleistern, und darauf dann die beweglichen Teile immer wieder neu zu zeichnen. Alles andere ist Rumgehampel, dass bestenfalls zu Fehleranfälligkeit führt.

Bei eher großen/komplexen Dingen kann es sich ggf. lohnen die von den dynamischen Teilen überdeckten Bereiche zu speichern (als Rect), und nur diese mit dem Hintergrund zu übernageln, wie es Windows z.B. selbst auch macht (InvalidateRect() und Co.), wobei das auch schnell in viel Aufwand für wenig Nutzen ausarten kann. Bitmaps hin- und herblitten gehört mit zu den einfacheren Aufgaben für einen PC.
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  Mit Zitat antworten Zitat
Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#4

AW: Probleme mit XOR-Zeichenmodus

  Alt 15. Aug 2010, 17:44
Gibt es aber generell einen Zeichenmodus, bei welchem ich eine "alte" Grafik nicht wieder mit der Hintergrundfarbe einfärben muss?
Nein, natürlich nicht. Wie sollte das funktionieren? Eine einmal überschriebene Information ist eben für immer weg. Du musst schon selbst dafür sorgen, dass irgendwo eine Kopie zwischengespeichert wird.
  Mit Zitat antworten Zitat
LargoD

Registriert seit: 8. Jun 2007
42 Beiträge
 
#5

AW: Probleme mit XOR-Zeichenmodus

  Alt 15. Aug 2010, 20:22
Gibt es aber generell einen Zeichenmodus, bei welchem ich eine "alte" Grafik nicht wieder mit der Hintergrundfarbe einfärben muss?
Alles was Du im XOR-Mode gezeichnet hast, kannst Du auch im XOR-Mode wieder löschen, indem Du es noch mal zeichnest.
Ich habe Dein Programm quick and dirty hingefummelt, damit Du das Prinzip siehst.

Delphi-Quellcode:
procedure TForm1.SetXOR;
begin
  Canvas.Brush.Style := bsClear;
  Canvas.Pen.Mode := pmXOR;
  Canvas.Pen.Style := psSolid;
  Canvas.Pen.Color := clBlack or clBtnFace;
end;

procedure TForm1.DrawCircle;
begin
  SetXOR;
  Canvas.Ellipse(x-Radius, 100-Radius, x+Radius, 100+Radius);
  x := (X+2) mod 200;
  Canvas.Ellipse(x-Radius, 100-Radius, x+Radius, 100+Radius);
end;

procedure TForm1.tmr1Timer(Sender: TObject);
begin
  DrawCircle;
end;

procedure TForm1.btn1Click(Sender: TObject);
begin
  x := 15; Radius := 10;
  SetXOR;
  Canvas.Ellipse(x-Radius, 100-Radius, x+Radius, 100+Radius);
  tmr1.Enabled := True;
end;
Gruß
Erich
  Mit Zitat antworten Zitat
Mysterio08

Registriert seit: 11. Jan 2009
142 Beiträge
 
#6

AW: Probleme mit XOR-Zeichenmodus

  Alt 16. Aug 2010, 05:48
Vielen Dank für Deine Antwort, LargoD! So etwas hilft mir wirklich weiter. Soweit, wie ich das jetzt sehe, kann ich das auch auf andere Probleme/Aufgabenstellungen beziehen!

Danke
  Mit Zitat antworten Zitat
Antwort Antwort

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 22:28 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