Autor Beitrag
Linuxguru
Hält's aus hier
Beiträge: 4



BeitragVerfasst: Mi 10.07.02 15:45 
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.

ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 997



BeitragVerfasst: 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?

_________________
Life is a bad adventure, but the graphic is really good!
G-McKree
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 178



BeitragVerfasst: 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