Entwickler-Ecke

Multimedia / Grafik - Freihandzeichnung mit pen auf Image


Linuxguru - Mi 10.07.02 15:45
Titel: Freihandzeichnung mit pen auf Image
Hallo!!!

Ich habe da ein Problem. Ich möchte auf einem Image eine Freihandzeichnung mit canvas.pen machen. Das funktioniert auch. Nur wenn ich pen.width := 12 setze, dann macht er bei schnelleren mausbewegungen immer da wo die linie neu gezeichnet wird einen weissen punkt hin. Praktisch immer an den enden der linie. Wenn ich die Maus ganz langsam bewege, sieht die linie dann aus wie gebrushed. kann mir jemand sagen, woran das liegt.ich geh mal von den xor operator aus, das der das nicht ganz korrekt darstellt.


Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
  if Drawing then begin
    Start:= Move;
    Move := Point(x,y);
    DrawShape(Start,Move,pmNotXOR);
end;


Danke für Lösungsvorschläge

Code-Tag hinzugefügt. Marc


Andreas Pfau - Mi 31.12.03 18:20

Hallo,

*recht hast*, der XOR-Operator sorgt prakitsch dafür, dass (bei S/W) dein Hintergrund invertiert wird! Biespiel:
- Alles ist weiß
- du machst einen Strich, der ist komplementär zu weiß, also schwarz
- deu machst ncoh einen Strich, ein Pixel davon überlappt sich mit dem alten Strich: Der Strich is schwarz, aber der eine Pixel invertiert das schwaze vom alten Strich: Ein weißer Pixel entsteht!

Nimm am besten statt XOR einen normalen Pinsel, und Schwarz als Pinselfarbe. DrawShape() kenne ich nicht... Haste das selber gecodet?


G-McKree - Fr 02.01.04 20:34

is doch viel eiinfacher, wen man immer ein cavas.lineto() zum cursor macht
noch mit check, ob die taste gedrückt is und das wars
einfache gehts nich