AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Mit Maus zeichnen / malen

Ein Thema von bwolf · begonnen am 30. Jun 2006 · letzter Beitrag vom 30. Jun 2006
Antwort Antwort
bwolf

Registriert seit: 17. Jan 2006
368 Beiträge
 
Delphi 2009 Professional
 
#1

Mit Maus zeichnen / malen

  Alt 30. Jun 2006, 08:39
Hi all!

bin grad dabei ein Nachrichtensystem zu schreiben, mit dem man auf einem Touchscreen Nachrichten mit einem Stift schreiben kann.
Hier ist auch mein Problem:
Ich benutze eine TPaintbox, und im onMouseMove Event färbe ich den entsprechenden Pixel ein:

PaintBox1.Canvas.Pixels[X,Y] := clRed;

Allerdings entsteht dann beim Zeichnen keine durchgehende Linie, sondern es entstehen zwischen den einzelnen Pixeln lücken, die, wenn man die Maus schneller bewegt, entsprechend größer werden.

Meine Frage:
Is die TPainbox die falsche Komponente dafür, oder muß da ein Puffer eingebaut werden oder wie mach ich das ?

Für ein paar Tips wär ich sehr dankbar, hab googel schon ne Weile genervt, aber leider ohne Erfolg :/

Danke schonmal,
greets ben
  Mit Zitat antworten Zitat
Benutzerbild von atreju2oo0
atreju2oo0

Registriert seit: 5. Dez 2003
Ort: Berlin
289 Beiträge
 
Delphi 6 Enterprise
 
#2

Re: Mit Maus zeichnen / malen

  Alt 30. Jun 2006, 09:06
ist eigentlich nicht so schwer... ;O)
Benutz einfach die Befehle moveto und lineto
Damit wird dann automatisch zwischen dem letzten und dem neuen Punkt ne Linie gezogen.
Thomas
  Mit Zitat antworten Zitat
bwolf

Registriert seit: 17. Jan 2006
368 Beiträge
 
Delphi 2009 Professional
 
#3

Re: Mit Maus zeichnen / malen

  Alt 30. Jun 2006, 09:27
Hi,

also wüßte nicht was das bringen soll ??
MoveTo bewirkt doch das selbe, wie wenn ich die PenPos setze.
Und mit LineTo kann ich den Endpunkt angeben, wohin die Linie gezogen werden soll.

Delphi-Quellcode:
PaintBox1.Canvas.MoveTo(X,Y);
PaintBox1.Canvas.LineTo(X+1,Y+1);
bewirkt genau das selbe wie:

PaintBox1.Canvas.Pixels[X,Y] := clRed; Oder hab ich nich kapiert worauf die hinaus willst?

Thx für eure Hilfe,
greets Ben
  Mit Zitat antworten Zitat
Benutzerbild von ste_ett
ste_ett

Registriert seit: 10. Sep 2004
Ort: Dülmen
464 Beiträge
 
Delphi 7 Professional
 
#4

Re: Mit Maus zeichnen / malen

  Alt 30. Jun 2006, 09:35
Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs;

type
  TForm1 = class(TForm)
    procedure FormMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
    procedure FormCreate(Sender: TObject);
  private
    SollGezeichnetWerden, ErsterZug: Boolean;
  public
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
begin
  if (ErsterZug) then
  begin
    ErsterZug := False;
    MoveTo(X, Y);
  end;
  if (SollGezeichnetWerden) then
    LineTo(X, Y);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  ErsterZug := True;
end;

end.
So war es gemeint.
Stefan
"Geht nicht!" ist keine Fehlerbeschreibung und "Hab ich schon versucht!" keine Antwort!

Hey, it compiles! Ship it!
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#5

Re: Mit Maus zeichnen / malen

  Alt 30. Jun 2006, 09:36
Du sollst beim MouseDown ein MoveTo() machen und bei dem MouseMove() jeweils nur ein LineTo() zu den X, Y Koordinaten die du bekommen hast. Dann sind diese von dir beschriebenen Lücken weg, da er eine Linie zeichnet anstatt eine Lücke zu lassen.

/EDIT: Rote Box??
  Mit Zitat antworten Zitat
bwolf

Registriert seit: 17. Jan 2006
368 Beiträge
 
Delphi 2009 Professional
 
#6

Re: Mit Maus zeichnen / malen

  Alt 30. Jun 2006, 09:39
Danke Muetze, für diese Erklärenden Worte
Dachte ich mir doch fast das ich es net geschnallt hab ^^

Ach und thx @ ste_ett für den eben geposteten Source

Thx a lot!
  Mit Zitat antworten Zitat
Antwort Antwort


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