Zelle in DrawGrid dauerhaft einfärben
Hallo zusammen
Ich möchte ein "zeichnungstool" für kleine Grafiken erstellen. Dazu müssen die Pixel recht gross sein. Deshalb wollte ich dazu ein DrawGrid nehmen. Um das Pixel bzw. die Zelle zu markieren, habe ich bisher folgenden Code:
Delphi-Quellcode:
Die macht mir die Zelle auch blau, leider bleibt diese aber nicht blau, sobald ich eine andere Zelle anklicke.
procedure TForm1.DrawGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState); begin if (gdSelected in State) then begin DrawGrid1.Canvas.Brush.Color := clBlue; DrawGrid1.Canvas.FillRect(Rect); end; Kann mir jemand sagen, wie ich dies erreiche, dass die Zelle markiert bleibt? Später möchte ich dann zelle um zelle durchgehen um zu sehen welche pixel 1 sind und welche 0. Danke schonmal |
AW: Zelle in DrawGrid dauerhaft einfärben
Hallo,
ich hatte mal so was ähnliches gemacht (war aber ein StringGrid) (ich schalte zwar nur zwischen zwei Farben um, aber das Prinzip sollte sichtbar sein) Im MouseDown hab ich die Farbe selektiert und als Object in die Zelle geschrieben
Delphi-Quellcode:
und in DrawCell der Zelle zugewiesen
procedure TForm3.StringGridMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer); var ACol : Integer; ARow : Integer; Farbe : TColor; begin StringGrid.MouseToCell(X, Y, ACol, ARow); Farbe := Integer(StringGrid.Objects[ACol, ARow]); If Farbe = SelectColor then Farbe := StandardColor else Farbe := SelectColor; StringGrid.Objects[ACol, ARow] := Pointer(Farbe); end;
Delphi-Quellcode:
procedure TForm3.StringGridDrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState); begin If gdFixed in State then exit; Rect.Left := Rect.Left - 4; StringGrid.Canvas.Brush.Color := Integer(StringGrid.Objects[aCol, ARow]); StringGrid.Canvas.FillRect(Rect); end; |
AW: Zelle in DrawGrid dauerhaft einfärben
Vielen Dank
Hat bestens geklappt :) |
AW: Zelle in DrawGrid dauerhaft einfärben
Sehr gruselig dieser Ansatz.
Man erstellt sich eine Datenklasse und speichert dort die Informationen. Und weil diese Datenklasse ja eine Grafik darstellt spendiert man der auch noch so lustige Methoden wie
Delphi-Quellcode:
und
FromBitmap
Delphi-Quellcode:
oder sogar besser per
ToBitmap
Delphi-Quellcode:
(ableiten von
Assign
Delphi-Quellcode:
).
TPersistent
|
AW: Zelle in DrawGrid dauerhaft einfärben
Zitat:
|
AW: Zelle in DrawGrid dauerhaft einfärben
Zitat:
|
AW: Zelle in DrawGrid dauerhaft einfärben
warum einfach wenn´s auch kompliziert geht...
Um eine Diskussion vorzubeugen: es gibt immer mehrere Wege zur Lösung |
AW: Zelle in DrawGrid dauerhaft einfärben
Es gibt eben immer mehr schlechte und falsche Wege als gute und richtige :stupid:
|
AW: Zelle in DrawGrid dauerhaft einfärben
Zitat:
|
AW: Zelle in DrawGrid dauerhaft einfärben
Zitat:
Runder wird das mit einer Klasse, wo man noch ein paar Hilfsmethoden dranbaut um aus dem Farbarray ein Bitmap zu bauen. Das Konzept hatte ich ja schon skizziert |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:51 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