Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Canvas Bezugspunkt ändern (https://www.delphipraxis.net/88567-canvas-bezugspunkt-aendern.html)

Flo.Hoe 18. Mär 2007 16:33

Re: Canvas Bezugspunkt ändern
 
Ja ich glaub auch. Das ist bestimmt sinnvoller. Dann komm ich wenigstens nicht so schnell bei mehreren Objekten durcheinander.
Aber wie ist das möglich?

Cöster 18. Mär 2007 17:03

Re: Canvas Bezugspunkt ändern
 
Zitat:

Zitat von Flo.Hoe
Aber wie ist das möglich?

Was? Wie man mit Offscreen-Bitmaps arbeitet? Die DP-Suche müsste dazu was finden.

Khabarakh 18. Mär 2007 19:32

Re: Canvas Bezugspunkt ändern
 
Zitat:

Zitat von Cöster
Sonst könntest du ja auch erst alles auf ein Offscreen-Bitmap zeichnen und das dann an die Position (30|30) auf das Canvas kopieren.

Wenn man also etwas auf einem 50x50-Image zeichnen will, soll man dafür ein 2,5-mal so großes Bitmap erstellen :shock: ?

Cöster 19. Mär 2007 14:08

Re: Canvas Bezugspunkt ändern
 
Zitat:

Zitat von Khabarakh
Zitat:

Zitat von Cöster
Sonst könntest du ja auch erst alles auf ein Offscreen-Bitmap zeichnen und das dann an die Position (30|30) auf das Canvas kopieren.

Wenn man also etwas auf einem 50x50-Image zeichnen will, soll man dafür ein 2,5-mal so großes Bitmap erstellen :shock: ?

:gruebel: Wie kommst du darauf? Dazu bräuchte man dann nur ein 20x20-Offscreen-Bitmap. Die Geschichte mit dem Offscreen-Bitmap geht aber natürlich nur, wenn man nur im ersten Quadranten zeichnet (ist doch der erste, oder? Der rein positive Bereich? Müsste ja rechts unten (statt wie im Mathe-Unterricht rechts oben) sein, weil die y-Achse ja gespiegelt ist).

Khabarakh 19. Mär 2007 16:16

Re: Canvas Bezugspunkt ändern
 
Ich merke gerade erst, dass dein Beispiel sowieso etwas verquer ist :gruebel: . Nehmen wir mal an, ich will eine Linie ((30|30);(80|80)) zeichnen, also die Diagonale des Images. Dann muss ich doch wohl ein 80x80-Bitmap erstellen und dessen Rect(30, 30, 80, 80)-Ausschnitt auf das Image ((0|0)) kopieren.

Lannes 19. Mär 2007 17:36

Re: Canvas Bezugspunkt ändern
 
Hallo,

da bietet sich doch eine Hilfsprozedur an:
Delphi-Quellcode:
procedure PosRectangle(aCanvas: TCanvas;Left,Top,Width,Height: Integer);
begin
  aCanvas.Rectangle(Left,Top,Left+Width,Top+Height);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  PosRectangle(PaintBox1.Canvas,30,30,70,70);
end;

Cöster 19. Mär 2007 20:24

Re: Canvas Bezugspunkt ändern
 
Zitat:

Zitat von Khabarakh
Ich merke gerade erst, dass dein Beispiel sowieso etwas verquer ist :gruebel: . Nehmen wir mal an, ich will eine Linie ((30|30);(80|80)) zeichnen, also die Diagonale des Images. Dann muss ich doch wohl ein 80x80-Bitmap erstellen und dessen Rect(30, 30, 80, 80)-Ausschnitt auf das Image ((0|0)) kopieren.

Nene, er will den Bezugspunkt auf (30|30) setzen, NICHT (-30|-30). D.h., wenn er 0 schreibt, soll bei 30 gezeichnet werden. Wenn er quer durch ein 50x50-Image zeichnen wollte (was er aber wahrscheinlich nicht will, weil er nur jenseits der 30en zeichnen will), müsste er schreiben wollen "MoveTo(-30,-30); LineTo(20, 20);" Das würde mit dem Offscreen-Bitmap nicht funzen (wg. negativen Werten).

soncer 10. Apr 2007 09:25

Re: Canvas Bezugspunkt ändern
 
Hi,

den Bezugspunkt kannst du ändern mit[Movewindoworg(canvas.handle, 35, 35, nil)] oder auch ohne nil.

mfg

soncer


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:22 Uhr.
Seite 2 von 2     12   

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