![]() |
Problem mit Paintbox1.Canvas.Pixels
Hi,
ich habe ein Problem mit folgendem Code:
Delphi-Quellcode:
Anstatt mir die Form bzw die Paintbox in Blau zu füllen enstehen zwei dicke Streifen.
procedure TForm1.Button2Click(Sender: TObject);
var p_width, p_height, p_gesamt, I,X : integer; begin p_width := paintbox1.Width; p_height := paintbox1.Height; for I := 0 to p_height do begin for X := 0 to p_width do begin paintbox1.Canvas.Pixels[i,x] := clblue; end; end; end; mmh. Kennt jemand das Problem ? mfg Stefan |
Re: Problem mit Paintbox1.Canvas.Pixels
Hallo und Willkommen in der DP :dp:,
abgesehen davon, dass Du I und X vertauscht hast, ist der Zugriff über Canvas.Pixels recht langsam. Hat das einen bestimmten Grund, dass Du das so machst? |
Re: Problem mit Paintbox1.Canvas.Pixels
Nö. ;)
I und X sind vertauscht bei:
Delphi-Quellcode:
// paintbox1.Canvas.Pixels[i,x] := clblue; <-<<
// richtig: paintbox1.Canvas.Pixels[x, i] := clblue; Die Paitbox an sich stellt Graphicen nur themporär zur Verfügung. Wenn ein anderes Fenster Label etc. dazwichen funkt wird der entsprechende Bereich in der Paintbox übermalt btz. gelöscht. Abhilfe, setze die Zeichenroutiene in das FormPaint-Ereignis.
Delphi-Quellcode:
Nun wird immer neu gezeichnet.
procedure TFormX.PaintBoxXPaint(Sender: TObject);
begin // ... end; |
Re: Problem mit Paintbox1.Canvas.Pixels
Ich sag doch, die sind vertauscht :stupid:
|
Re: Problem mit Paintbox1.Canvas.Pixels
und es wird auf Pixel außerhalb des Canvas zugegriffen
außerdem sollte der Code nur einen dicken blauen Streifen zeichnen :gruebel: der Rest wird nicht übermalt
Delphi-Quellcode:
[edit]
for I := 0 to p_width - 1 do
for X := 0 to p_height - 1 do OK, wenn ihr I und X in Pixels tausch, dann so
Delphi-Quellcode:
for I := 0 to p_height - 1 do
for X := 0 to p_width - 1 do |
Re: Problem mit Paintbox1.Canvas.Pixels
Der Hintergrund:
Möchte mir folgendes Programmieren: ![]() Und dazu muss / will ich auf Canvas.Pixels zugreifen, und da schien mir die TPaintbox Komponente als erste Wahl. (P.S. : Bin eigendlich schon länger in dem Forum nur leider habe ich mein PW und Benutzername für meinen alten Nick vergessen) |
Re: Problem mit Paintbox1.Canvas.Pixels
Hi,
um den Hintergrund komplett blau zu malen, reicht auch folgendes, was ebenfalls den Vorteil hat, dass es wesentlich schneller ist:
Delphi-Quellcode:
Dann brauchst du nur noch die entsprechenden Pixel mit Fischen und Haien zu füllen.
PaintBox.Canvas.Brush.Color := clBlue;
PaintBox.Canvas.FillRect(PaintBox.ClientRect); Das Ganze machst du dann, wie von turboPascal gesagt in dem OnPaint-Ereignis, damit das auch vernünftig neu gezeichnet wird. Gruß angos |
Re: Problem mit Paintbox1.Canvas.Pixels
Ich weiß,
nur finde ich das sehr interesant mit den Streifen !!! mfg Stefan |
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:29 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-2025 by Thomas Breitkreuz