AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Verwendung von TBrush.Bitmap
Thema durchsuchen
Ansicht
Themen-Optionen

Verwendung von TBrush.Bitmap

Ein Thema von Meflin · begonnen am 3. Jun 2007 · letzter Beitrag vom 4. Jun 2007
 
Benutzerbild von Meflin
Meflin

Registriert seit: 21. Aug 2003
4.856 Beiträge
 
#1

Verwendung von TBrush.Bitmap

  Alt 3. Jun 2007, 14:00
Moin moin!

Ich versuche gerade, mir eine Art Balkenkomponente zu schreiben. Dieser Balken soll diagonal schraffiert sein und was Delphi da an hauseigenen BrushStyles mitbringt sieht mir persönlich einfach zu dämlich aus!

Deshalb muss ein eigener BrushStyle her, schön und gut, mit der TBrush.Bitmap property sollte das ja auch kein Problem sein...

Allerdings scheitere ich an der Umsetzung und die Delphi IDE stürzt mehr oder weniger ständig ab wenn ich versuche meine Komponente zu testen.

Hier die essentiellen Code-Teile:

Klassendeklaration
Delphi-Quellcode:
  TVBBrushedLine = class(TCustomControl)
    private
      fBrushStyle: TBrushStyle;
      fLineStyle: TPenStyle;
      fBrushColor, fLineColor: TColor;
      fBrushBitmap: TPicture;
      procedure SetBrushStyle(const ABrushStyle: TBrushStyle);
      procedure SetBrushColor(const AColor: TColor);
      procedure SetLineStyle(const APenStyle: TPenStyle);
      procedure SetLineColor(const AColor: TColor);
      procedure SetBrushBitmap(const ABitmap: TPicture);
      procedure DrawBrushedLine;
    protected
      procedure Paint; override;
    public
      constructor Create(AOwner: TComponent); override;
    published
      property BrushStyle: TBrushStyle read fBrushStyle write SetBrushStyle;
      property BrushColor: TColor read fBrushColor write SetBrushColor;
      property LineStyle: TPenStyle read fLineStyle write SetLineStyle;
      property LineColor: TColor read fLineColor write SetLineColor;
      property BrushBitmap: TPicture read fBrushBitmap write SetBrushBitmap;
  end;
Konstruktor
Delphi-Quellcode:
constructor TVBBrushedLine.Create(AOwner: TComponent);
begin
  inherited Create(AOwner);
  fBrushBitmap := TPicture.Create;
end;
Setter
Delphi-Quellcode:
procedure TVBBrushedLine.SetBrushBitmap(const ABitmap: TPicture);
begin
  fBrushBitmap.Assign(ABitmap.Bitmap);
  Paint;
end;
Zeichen-Methode
Delphi-Quellcode:
procedure TVBBrushedLine.DrawBrushedLine;
begin
  if Parent = nil then
    Exit;

  Canvas.Brush.Style := BrushStyle;
  Canvas.Brush.Color := BrushColor;
  Canvas.Pen.Style := LineStyle;
  //if fBrushBitmap.Bitmap.Empty = false then Canvas.Brush.Bitmap.Assign(fBrushBitmap.Bitmap);
  Canvas.Rectangle(0, 0, Width, Height);
  Canvas.Brush.Bitmap.Free;
end;
Ohne die kommentierte Zeile funktioniert alles wie es soll, nur eben ohne den individuellen BrushStyle. Kommentiere ich die Zeile aus, hagelt es bei der Verwendung Fehler ala "Lesen von Adresse 000000" oder auch "Listenindex überschreitet das Maximum" (WTF???). Manchmal schmiert dann auch noch die DelphiSpeeUpErweiterung ab und ich muss Delphi via TaskManager killen

So macht Komponentenentwicklugn keinen Spaß

Was habe ich übersehen, vergessen, oder was mache ich falsch?

  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:19 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