Hirdetés

Hozzászólok Aktív témák

  • válasz Tomi_78 #2027 üzenetére

    Tehát akkor 2 dologról van szó
    1. van egy pályakép, amit mozogjon/mozgatható legyen (az mindegy most a példa kedvéért, hogy a mozgatást mi váltja ki: egér/bill. időzítő stb)
    2. te rá szeretnél még rajzolni a pályaképedre ilyen "puffancs"-nak :DDD keresztelt dolgokat és az alatt is mozgatható legyen a pályakép

    Maradjunk a korábban adott forráskódnál, mert az elég egyszerű, annyival kell kiegészíteni, hogy mindig ki kell rajzoltatni a "puffancsokat", de magát a canvas "törlését" a CopyRect belső eljárás megoldja azáltal, hogy a pályaképből általad megadott négyszög területet bemásolja (ezáltal a canvas adatait törli/felülírja) az image1 objectum canvas-ába. Ezt, mivel belső eljárás, gyorsan teszi. A CopyRect után csak újra ki kell rajzoltatni, amit szeretnél(puffancsokat).

    Mindösszesen 2 sort módosítottam a korábbi forrásfájlban, ami kiír egy szöveget, meg rajzol egy kört.

    unit Unit1;

    interface

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

    type
    TForm1 = class(TForm)
    Image1: TImage;
    ScrollBar1: TScrollBar;
    ScrollBar2: TScrollBar;
    Button1: TButton;
    procedure ScrollBar2Change(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    private
    { Private declarations }
    public
    { Public declarations }
    end;

    var
    Form1: TForm1;
    MyBitmap: TBitmap;

    implementation

    {$R *.DFM}

    procedure TForm1.ScrollBar2Change(Sender: TObject);
    var
    RectDest, RectSource: TRect;
    begin
    RectDest:=Rect(0, 0, Image1.Width, Image1.Height);
    RectSource:=Rect(ScrollBar1.Position, ScrollBar2.Position, Scrollbar1.Position+Image1.Width, ScrollBar2.Position+Image1.Height);
    Image1.Canvas.CopyRect(RectDest, MyBitmap.Canvas, RectSource);
    Image1.Canvas.TextOut(20,MyBitmap.Height div 2,'Ez itt egy szöveg, amit mindig ki kell iratni');
    Image1.Canvas.Ellipse(30,30,80,80);
    end;

    procedure TForm1.FormCreate(Sender: TObject);
    begin
    MyBitmap:=TBitmap.Create;
    MyBitmap.LoadFromFile('factory.bmp');
    Image1.Picture.Bitmap.Assign(MyBitmap);
    ScrollBar1.Max:=MyBitmap.Width-1-Image1.Width;
    ScrollBar2.Max:=MyBitmap.Height-1-Image1.Height;
    end;

    end.

    alt="" title=""

    Szóval nem az a lényeg az egészben, hogy Scrolbar-t használsz-e vagy sem, hanem hogy a CopyRect eljárást használd.

    [ Szerkesztve ]

    Mindenki tudja, hogy bizonyos dolgokat nem lehet megvalósítani, mígnem jön valaki, aki erről nem tud, és megvalósítja. (Albert Einstein)

Hozzászólok Aktív témák