Autor Beitrag
Dedan
Hält's aus hier
Beiträge: 5

Win XP
D6 Prof
BeitragVerfasst: Fr 04.11.05 20:57 
Hallo,

ich bin gerade dabei mir einen eigenen Button zu programmieren.
Dafür möchte ich eine eine Grafik in eine Paintbox laden in welcher
die Grafik dann mit Rahmen, etc versehen werden kann..

Sollte ja eigentlich auch nicht schwierig sein, doch bei:
ausblenden Delphi-Quelltext
1:
2:
  Paintbox1.Width := fPic.Graphic.Width;
  PaintBox1.Height := fPic.Graphic.Height;


wird nur ein Teil der Grafik angezeigt.

Ich kann das Problem zwar mit:

ausblenden Delphi-Quelltext
1:
2:
  Paintbox1.Width := fPic.Graphic.Width [b] *2 [/b];
  PaintBox1.Height := fPic.Graphic.Height [b] *2 [/b];


umgehen, hätte aber schon gerne, das die Paintbox passend ist und
nicht unnötig groß!

Ich hoffe mir kann jemand helfen..

grüße -stephan
Dedan Threadstarter
Hält's aus hier
Beiträge: 5

Win XP
D6 Prof
BeitragVerfasst: Sa 05.11.05 09:50 
vielleicht ist aus obiger Frage die Problematik nicht ganz ersichtlich.

hier jetzt mal der gesamte Quelltext, hoffe mir kann dann jemand helfen:

ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Panel1: TPanel;
    PaintBox1: TPaintBox;
    procedure Button1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;
  fPic:  TPicture;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
  Paintbox1.Width := fPic.Graphic.Width*3;
  PaintBox1.Height := fPic.Graphic.Height*3;

  With Paintbox1.Canvas do begin
    Draw(paintbox1.Left,paintbox1.Top,fPic.Graphic);

    Pen.Color := clOlive;
    brush.Style := bsClear;
    Rectangle(paintbox1.Left,paintbox1.Top,paintbox1.Left + fPic.Graphic.Width,paintbox1.Top + fPic.Graphic.Height);
  end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  fPic := TPicture.Create;
  fPic.LoadFromFile('C:\Delphi\Projekte\vokabeln\bilder\BtnBack.bmp');

  panel1.DoubleBuffered := true;

end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
  FreeAndNil(fPic);
end;

end.


Auf dem Formular befinden sich nur ein Panel und eine PictureBox.

Im Anhang ist das von mir verwendete Bild


grüße -Stephan
Einloggen, um Attachments anzusehen!
Kroko
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1284

W98 W2k WXP
Turbo D
BeitragVerfasst: Sa 05.11.05 10:30 
(1) ich würde nur TBitmap nehmen um die Grafik einzuladen
(2) Warum nimmst Du nicht TBitBtn oder TSpeedButton als Button, die haben die Eigenschaft Glyph um Grafik in BMP-Format aufzunehmen :?:
(3) wenn Du nocj mehr solcher Schalter brauchst, baue eine eigene Kompo auf Grundlage von TCustomPanel (z.B.)

_________________
Die F1-Taste steht nicht unter Naturschutz und darf somit regelmäßig und oft benutzt werden! oder Wer lesen kann, ist klar im Vorteil!
Dedan Threadstarter
Hält's aus hier
Beiträge: 5

Win XP
D6 Prof
BeitragVerfasst: Sa 05.11.05 10:49 
Danke für die schnelle Antwort.

(1)Das mit TBitmap werde ich gleich mal versuchen,
allerdings interessiert es mich auch wirklich wie es
zu dem Fehler bei TPaintBox kommt.
(2)Hatte mich gegen TBitBtn entschieder, da man hier die Farbe nicht ändern kann
TSpeedButton hatte ich irgendwie vergessen, jetzt gleich mal versucht und
er wäre perfekt für das was ich brauche, nur leider stellt er die
Hintergrundfarbe meines Bitmaps automatisch auf transparent, auch wenn
ich diese Eigentschaft im ObjektInspektor auf False stelle.
(3)Wäre froh wenn mir jemand bei 2. helfen kann, dann kann ich mir den Aufwand
mit einer eigenen Kompo ersparen.
Kroko
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1284

W98 W2k WXP
Turbo D
BeitragVerfasst: Sa 05.11.05 10:54 
TBitmap für TPicture

_________________
Die F1-Taste steht nicht unter Naturschutz und darf somit regelmäßig und oft benutzt werden! oder Wer lesen kann, ist klar im Vorteil!
Dedan Threadstarter
Hält's aus hier
Beiträge: 5

Win XP
D6 Prof
BeitragVerfasst: Sa 05.11.05 11:13 
Habe jetzt TPicture durch TBitmap ersetzt,
stehe damit aber immer noch vor dem gleichen Problem wie
zu Beginn. Es wird nur ein Ausschnitt meiner Grafik angezeigt!
Kroko
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1284

W98 W2k WXP
Turbo D
BeitragVerfasst: Mo 07.11.05 08:41 
Ich glaube ich habe deinen Fehler gefunden,

in der PaintBox beginnt Canvas wieder bei (0,0) d.h.
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
  Paintbox1.Width := fPic.Width+2;
  PaintBox1.Height := fPic.Height+2;

  With Paintbox1.Canvas do begin
    Draw(1,1,fPic);

    Pen.Color := clOlive;
    brush.Style := bsClear;
    Rectangle(0,0,fPic.Width+1,fPic.Height+1);
  end;

_________________
Die F1-Taste steht nicht unter Naturschutz und darf somit regelmäßig und oft benutzt werden! oder Wer lesen kann, ist klar im Vorteil!
Dedan Threadstarter
Hält's aus hier
Beiträge: 5

Win XP
D6 Prof
BeitragVerfasst: Mo 07.11.05 20:36 
Titel: Dankeschön
Jauuu, das war's.

Vielen Dank für deine Hilfe, das war zwar eigentlich nur
ein kleines Problem, das man Notfall anders hätte lösen könne,
aber ich ich war jetzt dennoch kurz vorm Verzweifeln :-)


grüße -Stephan