今天我一直在尝试从我的学校工作开始,我开始使用一些小图形,特别是菜单,其中有7个标题,你可以使用Key-Up和Key-Down在其中2个之间移动。主要问题是当你快速移动时,你可以看到我称之为“闪烁”,因为它不够快,不能重绘它。这是主要的想法。我怎么能解决这个问题?我想拥有它,因为他们有它。在Free Pascal IDE ..picture down`
procedure nakresliHviezdy(str:string;surX,surY:byte;backgroundCol:byte);
var i,j:byte;
sirkaRamcek,vyskaRamcek:byte;
dlzkaSlova:byte;
begin
TextBackground(backgroundCol);
sirkaRamcek:=40;
vyskaRamcek:=3;
dlzkaSlova:=length(str);
for i:=1 to sirkaRamcek do begin
for j:=1 to vyskaRamcek do begin
gotoxy(i+surX,j+surY);
if ((i=sirkaRamcek) or (i=1) or (j=1) or (j=vyskaRamcek)) then write(' ');
if ((j=2) and ((i<(sirkaRamcek-dlzkaSlova) DIV 2 +1)) or (i>(sirkaRamcek-dlzkaSlova) DIV 2 + dlzkaSlova)) then write(' ');
if ((i=(sirkaRamcek-dlzkaSlova) DIV 2 +1) and (j=2)) then writeln(str) ;
end;
end;
end;
procedure menu;
var pocitadlo:integer;
klavesa:char;
farba1,farba2,farba3,farba4,farba5,farba6,farba7:byte;
suradnicaX,suradnicaY:byte;
begin
pocitadlo:=1;
cursoroff;
TextColor(yellow);
suradnicaX:=40;
suradnicaY:=1;
nakresliHviezdy( '1.Vlozit vozidlo do evidencie STK',40,1,4);
nakresliHviezdy( '2.Najst vozidlo v evidencii STK',40,5,1);
nakresliHviezdy( '3.Opravit udaje o vozidle',40,9,1);
nakresliHviezdy( '4.Vymazat vozidlo z evidencie',40,13,1);
nakresliHviezdy( '5.Zoznam vsetkych vozidiel',40,17,1);
nakresliHviezdy( '6.Zoznam nesposobilych vozidiel',40,21,1);
nakresliHviezdy( '7.Koniec programu',40,25,1);
while True do begin
klavesa:=ReadKey;
if klavesa=#72 then dec(pocitadlo);
if klavesa=#80 then inc (pocitadlo);
if (pocitadlo=0) then pocitadlo:=1;
if (pocitadlo=8) then pocitadlo:=7;
if ((klavesa=#13) and (pocitadlo=7)) then exit;
case pocitadlo of
1:begin nakresliHviezdy( '1.Vlozit vozidlo do evidencie STK',40,1,4);nakresliHviezdy( '2.Najst vozidlo v evidencii STK',40,5,1); end;
2:begin nakresliHviezdy( '1.Vlozit vozidlo do evidencie STK',40,1,1);nakresliHviezdy( '2.Najst vozidlo v evidencii STK',40,5,4); nakresliHviezdy( '3.Opravit udaje o vozidle',40,9,1); end;
3:begin nakresliHviezdy( '2.Najst vozidlo v evidencii STK',40,5,1);nakresliHviezdy( '3.Opravit udaje o vozidle',40,9,4);nakresliHviezdy( '4.Vymazat vozidlo z evidencie',40,13,1); end;
4:begin nakresliHviezdy( '3.Opravit udaje o vozidle',40,9,1);nakresliHviezdy( '5.Zoznam vsetkych vozidiel',40,17,1); nakresliHviezdy( '4.Vymazat vozidlo z evidencie',40,13,4); end;
5:begin nakresliHviezdy( '4.Vymazat vozidlo z evidencie',40,13,1); nakresliHviezdy( '6.Zoznam nesposobilych vozidiel',40,21,1);nakresliHviezdy( '5.Zoznam vsetkych vozidiel',40,17,4); end;
6:begin nakresliHviezdy( '5.Zoznam vsetkych vozidiel',40,17,1); nakresliHviezdy( '7.Koniec programu',40,25,1); nakresliHviezdy( '6.Zoznam nesposobilych vozidiel',40,21,4); end;
7:begin nakresliHviezdy( '6.Zoznam nesposobilych vozidiel',40,21,1); nakresliHviezdy( '7.Koniec programu',40,25,4); end;
end;
end;
end;`
Here you can see how my program looks like
Free Pascal IDE 谢谢你的任何建议。
答案 0 :(得分:0)
textmode IDE使用Free Vision框架,该框架使用视频单元进行视频抽象。视频单元维护虚拟屏幕,仅将更改的部分写入屏幕。 FV和视频装置均配有FPC。
首先查看Lister演示,在FPC演示中展示如何直接使用单位视频。