Autor Beitrag
der organist
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 467
Erhaltene Danke: 17

WIN 7
NQC, Basic, Delphi 2010
BeitragVerfasst: Mi 13.08.08 08:14 
Ich bin verzweifelt... Ich versuche den Befehl, den mir mein Freund gegeben hat, ich schaue mir das Delphi-Forum und die Borland Hilfe an, aber ich komme nicht weiter.

Wie zeichnet man eine BitMap (nicht original-Größe)? Bitte für einen Anfänger erklären!

_________________
»Gedanken sind mächtiger als Waffen. Wir erlauben es unseren Bürgern nicht, Waffen zu führen - warum sollten wir es ihnen erlauben, selbständig zu denken?« Josef Stalin
iKilledKenny
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 394
Erhaltene Danke: 8

Win XP
D5 Prof, C# Express 2005
BeitragVerfasst: Mi 13.08.08 08:22 
Der Ansatz ist falsch. Man erzeugt eine Bitmap und zeichnet auf deren Canvas.
Pseudocode:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
bmp := TBitmap.Create;
bmp.Width := 150;
bmp.Height := 200;
bmp.Canvas.Brush.Color := clWhite;
bmp.Canvas.FillRect (Rect (0,0,bmp.Width,bmp.Height));
bmp.Canvas.Brush.Color := clRed;
bmp.Canvas.FillRect (Rect (10,10,20,20));
der organist Threadstarter
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 467
Erhaltene Danke: 17

WIN 7
NQC, Basic, Delphi 2010
BeitragVerfasst: Mi 13.08.08 16:03 
ok, das funzt, danke!

_________________
»Gedanken sind mächtiger als Waffen. Wir erlauben es unseren Bürgern nicht, Waffen zu führen - warum sollten wir es ihnen erlauben, selbständig zu denken?« Josef Stalin
Hidden
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 2242
Erhaltene Danke: 55

Win10
VS Code, Delphi 2010 Prof.
BeitragVerfasst: Mi 13.08.08 16:11 
Hi,

Interessant, dass das geholfen hat. :lol:

Ich hab von Stretchdraw gesprochen. Bitmap erzeugen, etc., haben wir schon gemacht :)

mfG,

_________________
Centaur spears can block many spells, but no one tries to block if they see that the spell is a certain shade of green. For this purpose it is useful to know some green stunning hexes. (HPMoR)
CJ(lux)
Hält's aus hier
Beiträge: 4

Win 7 Ultimate 64-bit
Delphi 2010 Architect, LabVIEW 2009 Student
BeitragVerfasst: Mo 30.08.10 20:51 
HI!

ehm, ich denke noch nie Bitmaps benutzt zu haben... wolte dieses Beispiel testen und es scheint zu funktionieren... wäre da nur nicht das Problem dass mir nichts angezeigt wird^^ ;)
bitte um Hilfe..


*EDIT* oder braucht man dazu noch welche Komponente? ich habe den Code einfach nur hinter ein Button gepastet..



mfG
CJ
der organist Threadstarter
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 467
Erhaltene Danke: 17

WIN 7
NQC, Basic, Delphi 2010
BeitragVerfasst: Mo 30.08.10 21:07 
naja, nen bisschen mehr Code dürfen wir erwarten? Sonst müssen wir raten und dann kommt sowas heraus wie: Hast du auch irgendwo nen Befehl zum Zeichnen drin?

EDIT: Ich würde ja behaupten, du brauchst ne Paintbox auf deiner Form. Dann Erzeugst du deine Bitmap (und setzt die Größe! Ich glaube, Daniel, das war das, was mir damals entfallen war). Dann zeichnest du, lädst mit deiner Bitmap herum, wie du lustig bist und dann lässt du die Paintbox die Bitmap zeichnen.

Gruss,

_________________
»Gedanken sind mächtiger als Waffen. Wir erlauben es unseren Bürgern nicht, Waffen zu führen - warum sollten wir es ihnen erlauben, selbständig zu denken?« Josef Stalin
Hidden
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 2242
Erhaltene Danke: 55

Win10
VS Code, Delphi 2010 Prof.
BeitragVerfasst: Mo 30.08.10 21:20 
Moin!

Der Quelltext oben erzeugt eine Bitmap und merkt sich in der Variable bmp, wo im Quelltext diese liegt.
Dann wird ein rotes Rechteck in die obere linke Ecke der Bitmap gemalt(10, 10 liegt nahe am Ursprung des Koordinatensystems, das ist oben links).

Versuche es einmal so:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
procedure Button1Press(Sender: Tobject);
var
  bmp: TBitmap;
begin
  bmp := TBitmap.Create;
  try
    bmp.SetSize(150200);
    bmp.Canvas.Brush.Color := clWhite;
    bmp.Canvas.FillRect (Rect (0,0,bmp.Width,bmp.Height));
    bmp.Canvas.Brush.Color := clRed;
    bmp.Canvas.FillRect (Rect (10,10,20,20));
    if SaveDialog1.Execute then
      bmp.SaveToFile(SaveDialog1.FilePath);
  finally
    bmp.Free;
  end;
end;


Die Unit Graphics muss eingebunden sein, und einen SaveDialog brauchst du auf dem Formular für diese Methode. Der try-finally-Block ist zum Verständnis nicht weiter wichtig. Der sorgt nur dafür dass der Speicher aujch bei Fehlern auf jeden Fall wieder freigegeben wird.

Eine andere Methode ist die Graphische Ausgabe auf einer visuellen Komponente wie TPaintbox oder TImage auf dem Formular.
Gemeinsam haben Paintbox, Image, Formular und TBitmap das Zeichenobjekt, Canvas. Eine Bitmap kannst du mit den Methoden Draw und Stretchdraw von TCanvas auf ein beliebiges Canvas kopieren. Wenn das Zeichnen in Schritten geschieht, nimmt man deshalb häufig zuerst eine Bitmap im Speicher und kopiert erst im letzten Moment auf eine visuelle Komponente.

lg,

PS: Moin, Lukas :wave: :P

_________________
Centaur spears can block many spells, but no one tries to block if they see that the spell is a certain shade of green. For this purpose it is useful to know some green stunning hexes. (HPMoR)
CJ(lux)
Hält's aus hier
Beiträge: 4

Win 7 Ultimate 64-bit
Delphi 2010 Architect, LabVIEW 2009 Student
BeitragVerfasst: Mo 30.08.10 21:31 
user profile iconder organist hat folgendes geschrieben Zum zitierten Posting springen:
naja, nen bisschen mehr Code dürfen wir erwarten? Sonst müssen wir raten und dann kommt sowas heraus wie: Hast du auch irgendwo nen Befehl zum Zeichnen drin?
....
EDIT: Ich würde ja behaupten... ...wie du lustig bist...


ich sage nichts ;) trotzdem vielen dank für den Post, habe es jetzt hinbekommen :)

auch danke ich Hidden für die Hilfe :)