Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Probleme bei selbsterstellten Grafikfenster (https://www.delphipraxis.net/84918-probleme-bei-selbsterstellten-grafikfenster.html)

schuetzejanett 23. Jan 2007 16:00


Probleme bei selbsterstellten Grafikfenster
 
hallo,

wollte für ein Programm auf meinem form ein grafikfenster haben, in der eine bmp geszeichnet wird und auf dem bild sollen hotspots sein sodas beim draufklicken ein bestimmter wert ausgelesen wird.

Nun zu meiner Frage welches Grafikfenster ist dafür am geeignetsten also image oder Paintbox oder so.
Ich bin mir noch nicht sicher ob ich die Hotspots selber als Flächen zeichne die beim Anklicken dann Farbig dargestellt werden sollen oder sonst unsichtbar sind.
Oder kann man Hotspots auch eine farbe zuordnen die dann bei markiert angezeigt wird so das der nutzer weiß diese Fläche hat er angeklickt?

inherited 23. Jan 2007 16:07

Re: Welches Grafikfenster geeignet
 
Mit den Farben würde das gehen.zB so (im MouseDown des Images zB)
Delphi-Quellcode:
  if ImageX.Picture.Canvas.Pixels[x,y]=clGreen then
    Blar(42);

schuetzejanett 23. Jan 2007 16:36

Re: Welches Grafikfenster geeignet
 
hallo,

habe mir jetzt eine Klasse Dartboard erstellt die von TPainbox abgeleitet ist und ein paintbox mit einem bild Dartbrett zeichnen soll.

Delphi-Quellcode:
unit DartBoard;

interface

uses
   Messages, SysUtils, Variants, Classes, Graphics, Controls,
   Dialogs, ExtCtrls, StdCtrls;

type
  TImageBox = class(TPaintBox)
  private
    Tboard: TGraphic;

  public
    constructor Create(AOwner: TComponent);
    destructor Destroy; override;
    procedure OnPaint(Sender : TObject);
  end;

implementation

{ TImageBox }

constructor TImageBox.Create;
begin
  inherited Create(AOwner);
  TBoard := TGraphic.Create;
  TBoard.LoadFromFile('Dartbrett.bmp');
end;

destructor TImageBox.Destroy;
begin
  FreeAndNil(TBoard);
  inherited;
end;

procedure TImageBox.OnPaint(Sender : TObject);
begin
  Canvas.Draw(0,0,TBoard);
end;

end.
Wenn ich diese paintbox jewtzt in meinem Formular erstellen will, bekomme ich einen fehler. Als ich versucht habe diesen mit dem debugger auf dem grund zu gehen. habe ich gesehen das er erst den kontruktor und dann gleich wieder den destruktor aufruft was mache ich falsch.

Delphi-Quellcode:
    private Gameboard : TImageBox;
...

    Gameboard := TImageBox.Create(self);
    Gameboard.Left := 410;
    Gameboard.Top := 125;
    Gameboard.Width := 350;
    Gameboard.height := 350;


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:21 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