Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Canvas.Brush.Style := bsCross // Problem (https://www.delphipraxis.net/107733-canvas-brush-style-%3D-bscross-problem.html)

Adrian112 1. Feb 2008 12:33


Canvas.Brush.Style := bsCross // Problem
 
Hallo,

ich habe ein Problem mit dem Canvas, und zwar ist wenn ich ein Rechteck (Mit Style bsCross) im TImage über die ganze Fläche zeichne dieses versetzt, die äußerste Linie stimmt nicht mit dem Rand vom TImage überein.Gibt es da irgendeinen Trick wie ich das verhindern kann?

Muetze1 1. Feb 2008 16:18

Re: Canvas.Brush.Style := bsCross // Problem
 
Könntest du den Code zum Zeichnen des Rechtecks sowie ein Screenshot, welcher das Problem darstellt, einfügen? Ich habe ein wenig Verständnisprobleme mir den eigentlichen Fehler zu erarbeiten.

Grundlegend verstehe ich dein Problem, kenne es aber nicht, vermute aber ein Verständnisproblem, da Linien und auch Rechtecke immer nur bis zu einem Pixel vor dem Endpunkt bzw. linken unteren Ecke gezeichnet werden. Das ist aber ein grundsätzliches Verhalten der Windows GDI. Daher: Zeig mal Code und Screenshot.

Adrian112 1. Feb 2008 17:01

Re: Canvas.Brush.Style := bsCross // Problem
 
Delphi-Quellcode:
Image.Canvas.Rectangle(0, 0, 500, 500);
// oder
Image.Canvas.Rectangle(Image.BoundsRect);
// kommt aufs gleiche raus
Screenshot hab ich grad keinen, aber ich erklärs nochmal:
Ich habe ein TImage mit der Größe 500 * 500 , in dieses zeichne ich ein Raster mit dem Code von oben.#
Nur sollte die äuserste Linie des Rasters mit der Kante des TImage übereinstimmen, was es aber nicht macht.
Es ist also versetzt. Man kann es sich auch wie ein kariertes Blatt vorstellen an dem die Kästchen in der äußersten Reihe nicht mehr komplett sind.

Muetze1 1. Feb 2008 17:05

Re: Canvas.Brush.Style := bsCross // Problem
 
Delphi-Referenz durchsuchenTImage.BoundsRect oder auch Delphi-Referenz durchsuchenTImage.ClientRect sind die Abmasse bzw. Position der TImage Komponente und nicht die des darin enhaltenen Bildes. Diese Abmaße findest du unter der Picture Eigenschaft: Delphi-Referenz durchsuchenTImage.Picture.Width und Delphi-Referenz durchsuchenTImage.Picture.Height.

Adrian112 1. Feb 2008 17:16

Re: Canvas.Brush.Style := bsCross // Problem
 
Ja, was ich noch garnicht gesagt habe ist, dass sich im TImage garkein Bild befindet, ich will einfach nur ein Raster über die ganze Fläche zeichnen.

Muetze1 1. Feb 2008 18:54

Re: Canvas.Brush.Style := bsCross // Problem
 
Ein TImage hat leider öfters mit solchem Missbrauch zu tun, weshalb automatisch ein TBitmap angelegt wird. Hast du denn schon vorher dieses Bitmap entsprechend vergrößert, so dass es den Abmaßen der TImage Komponente entspricht? Und warum nutzt du ein TImage (welches zum Anzeigen von Bildern dient) nicht mit einem festen Bild welches dein Muster enthält? Wenn du das Muster selber erstellen willst, warum nutzt du nicht die dafür vorgesehene TPaintBox Komponente?


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:18 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 by Thomas Breitkreuz