26. april 2002 - 12:04Der 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).
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
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! :)
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;
Synes godt om
Ny brugerNybegynder
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.