Avatar billede jisch Mester
04. april 2001 - 13:35 Der er 7 kommentarer og
1 løsning

Delphi 5 baggrundsbillede


Jeg savner en rutine der kan repeat\'e et billede, der fylder mindre end den form hvor det skal vises. Umiddelbart kan jeg i Delphi kun bruge streched:=True, men det forvrænger billedet.

Hilsen Johnny

Avatar billede delphimann Nybegynder
04. april 2001 - 13:52 #1
Jeg tror det har noget med billedet at gør... tror ikke det kan fikes... *sorry* ( jeg er IKKE 100% sikker ) hvis du f.eks åbner billedet i en browser og sætter målene til at være det sammen kommer det vel til at se ens ud ik\' ?!
Avatar billede martinlind Nybegynder
04. april 2001 - 14:02 #2
Du skal selv tegne det \"Side om Side\" på din forms baggrund.
Avatar billede borrisholt Novice
04. april 2001 - 14:35 #3
så må vi skrive et hack ....


burde optimeres, men gidder ikke :

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs;

type
  TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
    procedure FormPaint(Sender: TObject);
  private
    BitMap : TBitMap;
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.FormCreate(Sender: TObject);
begin
BitMap := TBitMap.Create;
BitMap.LoadFromFile(\'task.bmp\');
end;

procedure TForm1.FormPaint(Sender: TObject);
var
xOff,yOff,xSize,ySize : Integer;
bmXSize,bmYSize : LongInt;
ps : PAINTSTRUCT;
wr : TRECT;
bCountX,bCountY,cw,ch : Integer;
begin
  BeginPaint(Handle,ps);
    wr := GetClientRect();
    xOff := 0;
    yOff := 0;
    xSize := wr.Right;
    ysize := wr.Bottom;

    bmXSize:=BitMap.Width;
    bmYSize:=BitMap.Height;
    bCountX:=Trunc((xSize / bmXSize)+1);
    bCountY:=Trunc((ysize / bmYSize)+1);
   
    for cw :=0 to bCountX-1 do
      for ch:=0 to bCountY-1 do
        BitBlt(Canvas.Handle,xOff+(cw*bmXSize),yOff+(ch*bmYSize),bmXSize,bmYSize,BitMap.Canvas.Handle,0,0,SRCCOPY);
  EndPaint(Handle,ps);
end;

end.


Jens B
Avatar billede jisch Mester
04. april 2001 - 23:37 #4
Tak til borrisholt. Jeg optimerer selv.
Avatar billede delphi Nybegynder
06. april 2001 - 11:13 #5
Borris:
  Hvad er din begrundelse til at bruge BeginPaint/EndPaint?

SÅ vidt jeg umiddelbart kan se gør de ingen nytte.  I online hjælpen står der endda:

\"An application should not call BeginPaint except in response to a WM_PAINT message.\"

FormPaint er da netop en event der sker som respons til WM_PAINT messages (hvis jeg ellers husker rigtigt).

Peter
Avatar billede delphi Nybegynder
06. april 2001 - 11:15 #6
Ups, havde lige overset det lille ord: Except... det giver pludseligt en ny mening.... (Incompetance error)

Peter
Avatar billede borrisholt Novice
06. april 2001 - 11:18 #7
Peter >> Du har fuldstendig ret ..... Den bedste grund jeg har for at bruge BeginPaint/EndPaint : Koden er portet fra noget C++ kode som jeg en gang havde skrevet .. Så portede jeg blot det unde at tænke det helt store ... DET er da en god grund !?!

Jens B
Avatar billede delphi Nybegynder
06. april 2001 - 11:30 #8
Så vidt jeg kan se sker der noget hvis der er en evt. caret....
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