Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Raster ein- und ausblenden (https://www.delphipraxis.net/110645-raster-ein-und-ausblenden.html)

Christian18 21. Mär 2008 15:23


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;

ich2 21. Mär 2008 15:38

Re: Raster ein- und ausblenden
 
hihi...

das scheint mir wohl die effektivste Art und Weise zu sein!!

mfg

Meflin 21. Mär 2008 15:46

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:


r29d43 21. Mär 2008 16:52

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:
if StrgAltKeyFlag=true then TransparentBlt(Canvas.Handle,0,0,width,height,RasterBmp.Canvas.Handle,0,0,RasterBmp.Width,RasterBmp.Height,$ffffff);
(wobei $ffffff natürlich die Untergrundfarbe deines Rasterbitmaps wäre).

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 :-)]

Flips 21. Mär 2008 18:14

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 07:39 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