Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Bitmap in Paintbox anzeigen (https://www.delphipraxis.net/70230-bitmap-paintbox-anzeigen.html)

netscanner 27. Mai 2006 10:06


Bitmap in Paintbox anzeigen
 
Hallo,
ich möchte ein Bitmap (oder anderes Bildformat) an einer bestimmten stelle in einer Paintbox anzeigen lassen.
Ich bekomm es aber irgendwie nicht hin.

Hab auch schon die Suche benutzt aber da wird nirgends angezeigt, wo ich einen Pfad zu der Bilddatei eingeben kann.



Gruß Martin

xaromz 27. Mai 2006 10:10

Re: Bitmap in Paintbox anzeigen
 
Hallo,
Zitat:

Zitat von netscanner
ich möchte ein Bitmap (oder anderes Bildformat) an einer bestimmten stelle in einer Paintbox anzeigen lassen.
Ich bekomm es aber irgendwie nicht hin.

Hab auch schon die Suche benutzt aber da wird nirgends angezeigt, wo ich einen Pfad zu der Bilddatei eingeben kann.

Du kannst auch kein Bild in eine Paintbox laden. Du musst das Bild erst in ein TBitmap laden, und dann dieses auf den Canvas der Paintbox malen (Delphi-Referenz durchsuchenTCanvas.Draw).

Gruß
xaromz

netscanner 27. Mai 2006 10:11

Re: Bitmap in Paintbox anzeigen
 
das war mir irgendwie klar ^^
aber dann ist da das problem, wie ich ein bild in ein Tbitmap lade :(

Bin echt grade auf dem Holzweg

xaromz 27. Mai 2006 10:14

Re: Bitmap in Paintbox anzeigen
 
Hallo,
Zitat:

Zitat von netscanner
das war mir irgendwie klar ^^
aber dann ist da das problem, wie ich ein bild in ein Tbitmap lade :(

Bin echt grade auf dem Holzweg

Wie wär's mit Delphi-Referenz durchsuchenTBitmap.LoadFromFile?

Gruß
xaromz

ferby 15. Aug 2006 23:09

Re: Bitmap in Paintbox anzeigen
 
Hallo,

weil das Thema hier gut reinpasst.

Wenn ich mit TBitmap.LoadFromFile ein Bitmap lade,
dann wird das Bitmap ins linke obere Eck geladen.

Wie kann ich das Bitmap irgendwo hin laden?


Mein Problem:
Ich habe ein TBItmap mit Inhalt, jetzt möchte ich ca. in die Mitte des Inhaltes eine Zeichnung aus einer *.bmp Laden,
aber ich hab keine Ahnung wie ich das in die Mitte lade. Denn wenn ich BM.LoadFromFile('tes.bmp'); verwende, dann kann ich keine Koordinaten oder sonst was angeben....

Hoffe mein Problem ist klar..



Ferby

Luckie 15. Aug 2006 23:18

Re: Bitmap in Paintbox anzeigen
 
Zitat:

Zitat von ferby
Wenn ich mit TBitmap.LoadFromFile ein Bitmap lade,
dann wird das Bitmap ins linke obere Eck geladen.

In welche linke obere Ecke? Die vom Speicher? Mit der Methode LoadFromFile wird das Bitmap nur in den Speicher geladen, mehr nicht. Entscheident ist, wie du es auf den Canvas der PaintBox kopierst. Und wenn ich mir mal die Hilfe zu der Methode Delphi-Referenz durchsuchenDraw angucke, dann lese ich:
Zitat:

Renders the graphic specified by the Graphic parameter on the canvas at the location given by the coordinates (X, Y).

procedure Draw(X, Y: Integer; Graphic: TGraphic);

Description

Call Draw to draw a graphic on the canvas. Draw calls the Draw method of the graphic. The image is rendered into a rectangle determined by the size of the graphic, with the upper left corner at the point (X, Y).

Graphics can be bitmaps, icons, or metafiles. If the graphic is a TBitmap object, the bitmap is rendered using the value of CopyMode.
Den entscheidenden Teil habe ich mal hervorgehoben. ;)

ferby 15. Aug 2006 23:28

Re: Bitmap in Paintbox anzeigen
 
Hallo,

ich verstehe nicht ganz was du meinst, aber hier mal mein Quellcode:


Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Forms, GIFImage, Classes, Controls, ExtCtrls, Graphics, StdCtrls;

type
  TForm1 = class(TForm)
    PBox: TPaintBox;
    procedure FormCreate(Sender: TObject);
    procedure FormPaint(Sender: TObject);
  end;

var
  Form1: TForm1;
  BM: TBitmap;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin

  // BM wird mit blauen Hintergrund erstellt
  BM:=TBitmap.create;
  BM.Width:=790;
  BM.Height:=590;

  BM.Canvas.Brush.Color:=clBlue;
  BM.Canvas.FillRect(Rect(0,0,790,590));

  // Extra Grafik wird hineingeladen
  BM.LoadFromFile('dat/ferby-speed.bmp');
end;

procedure TForm1.FormPaint(Sender: TObject);
begin
  BitBlt(PBox.Canvas.Handle, 0, 0, BM.Width, BM.Height, BM.Canvas.Handle, 0, 0, SrcCopy);
end;

end.

Ich möchte jetzt das die Zeichnung von ferby-speed.bmp nicht links oben beim Bildschirm angezeigt wird sondern in der mitte,
wie muss ich das anstellen?

Luckie 15. Aug 2006 23:36

Re: Bitmap in Paintbox anzeigen
 
Was heißt du verstehst nicht, was ich meine? ist es denen so schwer zu verstehen, dass bei der Methode Draw die ersten beiden Parameter (x, y) die Position angeben, wo sich am Ende die linke obere Ecke des Bitmaps befindet?

Bei BitBlt genaus:
Delphi-Quellcode:
procedure TForm1.FormPaint(Sender: TObject);
begin
  BitBlt(PBox.Canvas.Handle, 0, 0, BM.Width, BM.Height, BM.Canvas.Handle, 0, 0, SrcCopy);
end;
Was geben wohl der zweite und dritte bzw. der achte und neunte Parameter an? Wenn man es nicht in der Hilfe* findet, dann könnte man da doch einfach mal irgendwelche Werte eingeben und gucken, was passiert.

Die passende Hilfe wäre hier übrigens das PSDK / MSDN, da es sich um eine Windows API-Funktion handelt.

ferby 15. Aug 2006 23:43

Re: Bitmap in Paintbox anzeigen
 
Hallo,

was ich nicht verstehe ist, ob ich jetzt zwei Variabeln von Typ TBitmap brauche oder nicht.

Ich brauche doch 2? Sonst hab ich nicht kapiert wie du das lösen willst.


Ich verstehe das schon mit dem Draw und den Koordinanten.

Luckie 15. Aug 2006 23:44

Re: Bitmap in Paintbox anzeigen
 
Ja das brauchst du. Aber wo ist das Problem? dann gibst du bei BitBlt eben das erste als Ziel an. Und dann kopierst du das erste auf die PaintBox zum Anzeigen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:57 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz