Avatar billede jens123 Nybegynder
26. april 2002 - 12:04 Der er 6 kommentarer og
1 løsning

mal tbitmap med mxdraw (delphix komponent)

Jeg vil hente et billeder ind i programmet, efter det er startet og ikke med en imageliste(fordi så kan der ialt kun være omkrig 5 mb billedmateriale).

jeg har brugt følgende kode

var
baggrund : tbitmap;

baggrund := Tbitmap.Create;
baggrund.LoadFromFile('baggrund\baggrund.bmp');

men hvordan får jeg "baggrund" vis på skærmen.

P.S
Koden overfor skal ikke bruges, til at hente billedet ind med. andre eller bedre foreslag godtages osse.
Avatar billede stoney Nybegynder
26. april 2002 - 12:34 #1
Brug en paintbox

procedure TForm1.Button1Click(Sender: TObject);
var
  baggrund: TBitmap;
begin

baggrund := Tbitmap.Create;
baggrund.LoadFromFile('c:\baggrundbaggrund.bmp');


  PaintBox1.Canvas.Brush.Bitmap := baggrund;
  PaintBox1.Canvas.FillRect(Rect(0, 0, baggrund.Width, baggrund.Height));




end;

Stoney
Avatar billede hermandsen Juniormester
26. april 2002 - 13:16 #2
Jeg fandt det her i hjælpen:


unit bmpformu;

//
interface
uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls;
type
  TBmpForm = class(TForm)
    Button1: TButton;
    procedure FormDestroy(Sender: TObject);
    procedure FormPaint(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
    Bitmap: TBitmap;
    procedure ScrambleBitmap;

    procedure WMEraseBkgnd(var m: TWMEraseBkgnd); message WM_ERASEBKGND;
  public
    { Public declarations }
  end;
var
  BmpForm: TBmpForm;
implementation

{$R *.DFM}

procedure TBmpForm.FormCreate(Sender: TObject);
begin
  Bitmap := TBitmap.Create;
  Bitmap.LoadFromFile('bor6.bmp');
end;
procedure TBmpForm.FormDestroy(Sender: TObject);
begin
  Bitmap.Free;
end;
// since we're going to be painting the whole form, handling this

// message will suppress the uneccessary repainting of the background
// which can result in flicker.
procedure TBmpform.WMEraseBkgnd(var m : TWMEraseBkgnd);
begin
  m.Result := LRESULT(False);
end;
procedure TBmpForm.FormPaint(Sender: TObject);
var
  x, y: Integer;
begin
  y := 0;
  while y < Height do
  begin
    x := 0;
    while x < Width do
    begin
      Canvas.Draw(x, y, Bitmap);

      x := x + Bitmap.Width;
    end;
    y := y + Bitmap.Height;
  end;
end;
procedure TBmpForm.Button1Click(Sender: TObject);
begin
  ScrambleBitmap;
  Invalidate;
end;

//
// scrambling the bitmap is easy when it has 256 colors:
// we just need to change each of the colors in the palette
// to some other value.
//
procedure TBmpForm.ScrambleBitmap;
var
  pal: PLogPalette;
  hpal: HPALETTE;

  i: Integer;
begin
  pal := nil;
  try
    GetMem(pal, sizeof(TLogPalette) + sizeof(TPaletteEntry) * 255);
    pal.palVersion := $300;
    pal.palNumEntries := 256;
    for i := 0 to 255 do
    begin
      pal.palPalEntry[i].peRed := Random(255);
      pal.palPalEntry[i].peGreen := Random(255);
      pal.palPalEntry[i].peBlue := Random(255);
    end;
    hpal := CreatePalette(pal^);
    if hpal <> 0 then

      Bitmap.Palette := hpal;
  finally
    FreeMem(pal);
  end;
end;
end.
Avatar billede jens123 Nybegynder
26. april 2002 - 15:25 #3
problemmet er at, jeg skal bruge komponenten dxdraw til at vise billedet.
Avatar billede hermandsen Juniormester
26. april 2002 - 15:33 #4
Er der ikke en Assign-procedure eller noget dxDraw?
Jeg har aldrig selv rigtig leget med DelphiX, men det burde der da være... Det kan også være den bruge sine egne typer, men jeg kan ikke sige det med sikkerhed, så måske det var bedre jeg holdte min kæft! :)
Avatar billede kayb Nybegynder
26. april 2002 - 15:49 #5
Jeg mener at dette kan bruges

baggrund:=Tbitmap.Create;
DXDraw1.Surface.Canvas.Draw(10,10,baggrund);
Avatar billede jens123 Nybegynder
26. april 2002 - 17:33 #6
Jeg har prøet følgende, men det virker ikke rigtig.
Jeg får bare en sort skærm.
Nogen ide hvad der kan være forkert.

procedure tform1.button1click;
var
baggrund : tbitmap;
begin
baggrund:=Tbitmap.Create;
baggrund.LoadFromFile('c:\baggrund.bmp');
DXDraw1.Surface.Canvas.Draw(10,10,baggrund);
dxdraw1.flip;
end;
Avatar billede kayb Nybegynder
26. april 2002 - 18:06 #7
procedure tform1.button1click;
var
  baggrund : tbitmap;
begin
  baggrund:=Tbitmap.Create;
  baggrund.LoadFromFile('c:\baggrund.bmp');
  DXDraw1.Surface.Canvas.Draw(10,10,baggrund);
// **** Du skal have en release ind her
  DXDraw1.Surface.Canvas.Release;
  dxdraw1.flip;
end;
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester