Einzelnen Beitrag anzeigen

Blup

Registriert seit: 7. Aug 2008
Ort: Brandenburg
1.477 Beiträge
 
Delphi 12 Athens
 
#10

AW: Bitmap soll gelegentlich unsichtbar sein

  Alt 22. Jan 2014, 10:27
Wenn Rückfragen kommen, die scheinbar nichts mit der eigenen Fragestellung zu tun haben, sollte man erst einmal überprüfen, ob das Thema wirklich verständlich genug dargestellt wurde. Ich bin aus der urspünglichen Fragestellung auch nicht schlau geworden.

Gewünscht wird scheinbar eine eigene Grafikklasse, die mehrere Layer unterstützt und für jeden Layer (neben der durch den Layer darzustellenden Grafik) weitere Eigenschaften speichert, die bei der Darstellung zu berücksichtigen sind. Diese Grundgerüst kann eventuell noch mit einer Ableitung von TImage und TPicture überbaut werden, die genau diese Grafikklasse published als Property bereitstellt und so die direkte Bearbeitung im Objektinspektor erlaubt.
Das Grundgerüst für die Grafikklasse könnte dann in etwa so ausschaun:
Delphi-Quellcode:
uses
  Graphics;

type
  TGraphicLayerList = class(TCollection)
  end;

  TLayerGraphic = class(TGraphic)
    constructor Create(AOwner: TComponent); override;
  private
    FLayer: TGraphicLayerList;
  protected
    procedure Draw(ACanvas: TCanvas; const Rect: TRect); override;
    {...zumindest alle abstrakten Methoden überschreiben...}
    procedure SetLayer(AValue: TGraphicLayerList);
  published
    property Layer: TGraphicLayerList read FLayer write SetLayer;
  end;

  TGraphicLayer = class(TCollectionItem)
    constructor Create(Collection: TCollection); override;
  private
    FRect: TRect;
    FVisible: Boolean;
    FPicture: TPicture;
    procedure SetRect(AValue: TRect);
    procedure SetVisible(AValue: Boolean);
    procedure SetPicture(AValue: TPicture);
  published
    property Rect: TRect read FRect write SetRect;
    property Visible: Boolean read FVisible write SetVisible;
    property Picture: TPicture read FPicture write SetPicture;
  end;

implementation

constructor TLayerGraphic.Create(AOwner: TComponent);
begin
  inherited;
  FLayer := TGraphicLayerList.Create(TGraphicLayer);
  {...}
end;

procedure TLayerGraphic.SetLayer(AValue: TGraphicLayerList);
begin
  FLayer.Assign(AValue);
end;
  Mit Zitat antworten Zitat