Új hozzászólás Aktív témák

  • Tomi_78

    aktív tag

    Sziasztok!
    Lazarusban írnék egy programot, amiben a főablak akkora, mint a képernyőfelbontás, és van egy kétszer akkora, görgethető pályakép. Ezen most egyelőre csak egy felirat van, amit a görgetés során szeretnék elmozgatni. Mozogni mozog is, de az előző helyén is megmarad, ami elég csúnyán néz ki. Az invalidate nem törli is a képernyőt egyben? Vagy mit kellene tennem a rendes kinézetű programhoz? Van külön képernyőtörlés grafikus módban is? Itt a kódom:

    procedure TForm1.FormCreate(Sender: TObject);
    begin
    width:=Screen.width;
    height:=Screen.height;
    palyakep:=TBitmap.Create;
    palyakep.SetSize(width*2,height*2);
    palyakepx:=0;
    palyakepy:=0;
    end;

    procedure TForm1.FormDestroy(Sender: TObject);
    begin
    palyakep.Free;
    end;

    procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState
    );
    begin
    if Key=VK_LEFT then
    begin
    if (palyakepx+palyakep.canvas.width)-4>=width then
    begin
    dec(palyakepx,4);
    invalidate;
    end;
    end;
    if Key=VK_RIGHT then
    begin
    if palyakepx+4<=0 then
    begin
    inc(palyakepx,4);
    invalidate;
    end;
    end;
    end;

    procedure TForm1.FormPaint(Sender: TObject);
    begin
    canvas.draw(palyakepx,palyakepy,palyakep);
    palyakep.canvas.textout(palyakepx+(palyakep.canvas.width div 2),20,'Ez itt a közepe.');
    end;

Új hozzászólás Aktív témák