![]() |
Raster ein- und ausblenden
Hallo,
wenn ich Strg + Alt drücke, möchte ich ein Raster zeichnen. Das bekomme ich auch hin. Wenn wieder losgelassen wird, dann soll das raster weg sein. Ich könnte mit ein bisschen aufwand die einzelnen punkte wieder zurückzeichen. also pixelfarbe wieder auf hintergrundfarbe setzen. Geht es aber auch besser?
Delphi-Quellcode:
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState); var x, y : Word; begin if Shift = [ssCtrl, ssAlt] then begin for x:=0 to Form1.ClientWidth div 8 do begin for y:=0 to Form1.ClientHeight div 8 do begin Form1.Canvas.Pixels[x * 8, y * 8]:=clBlack; end; end; end; end; |
Re: Raster ein- und ausblenden
hihi...
das scheint mir wohl die effektivste Art und Weise zu sein!! mfg |
Re: Raster ein- und ausblenden
Naja, wenn du nicht echt übermalen willst musst du dir eben ein eigenes Control ableiten, das du dann darüber legst, wo das Raster sein soll. Wenn du dieses Control zerstörst oder ausblendest sollte das darunter wieder zum Vorschein kommen, da dessen Canvas ja nicht geändert wurde.
Allerdings ist das mit der Transparenz bei Controls so eine Sache :stupid: |
Re: Raster ein- und ausblenden
Nimm ein Bmp, zeichne da das Raster drauf, und im FormPaint-Handler fügst Du dann noch folgende Zeile ein:
Delphi-Quellcode:
(wobei $ffffff natürlich die Untergrundfarbe deines Rasterbitmaps wäre).
if StrgAltKeyFlag=true then TransparentBlt(Canvas.Handle,0,0,width,height,RasterBmp.Canvas.Handle,0,0,RasterBmp.Width,RasterBmp.Height,$ffffff);
Wann immer sich dann mal was am State deiner Strg + Alt -Keys ändert, ändert das ggf. auch das StrgAltKey-Flag ...und mit einem dann anschließenden Aufruf von Form.Repaint auch ohne weitere Arbeiten entsprechend dein Form-Output. mfg [edit: statt FormPaint war natürlich die Form.Repaint-Methode gemeint ...die anschließend nochmal aufgerufen werden muss :-)] |
Re: Raster ein- und ausblenden
Hi
Naja, wenn das Raster einfach nur weg soll ohne Rücksicht auf Verluste, dann ist das hier wohl die einfachste Variante:
Delphi-Quellcode:
procedure TForm1.FormKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState); begin Invalidate; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:44 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