Nếu bạn là một YouTuber chuyên nghiệp thì bạn sẽ phải luôn đối mặt với tình trạng hết dung lượng ổ đĩa do làm việc với nhiều file video chất lượng cao. Điển hình là tôi đây, thường hay gặp phải lỗi này " Not enough free space on disk " do quá tải các file cache của phần mềm biên tập video gây ra. Tôi đã có cách nhanh để khắc phục vấn đề này! Lỗi tiêu hao dung lượng ổ đĩa trong máy tính thường do các phần mềm biên tập ảnh, video chất lượng cao... gây nên, chính vì thế một khi chúng ta thấy ổ đĩa đầy lên bất thường mà trước đó không cài đặt bất cứ phần mềm nào thì hãy dùng cách khắc phục sau nhé! Bước 1 : Truy cập đến thư mục lưu các file tạm của phần mềm biên tập, chẳng hạn như AVSVideoEditor . C:\Users\Administrator\Appdata\Roaming\AVS4YOU\AVSVideoEditor\Temp Bước 2 : Tiến hành xóa các thư mục chứa file video tạm của phần mềm biên tập video là coi như xong!
Chúng ta hãy cùng xem một số thủ thuật làm hình chuyển động trên Turbo Pascal sau đây:
Thủ thuật vẽ, xóa
Đây là thủ thuật đơn giản làm hình chuyển động bằng cách vẽ đối tượng ở một vị trí, sau đó xóa đối tượng và vẽ lại nó ở một vị trí khác. Nhưng thủ thuật này thường làm cho hình chuyển động bị nháy và không mịn nhất là đối với các hình phức tạp.
Các bước thực hiện:
+ Dùng các lệnh cơ bản vẽ hình ở một vị trí đã định
+ Lưu hình bằng Delay
+ Xóa hình bằng cách vẽ lại chính nó nhưng tô màu bằng màu nền
+ Di chuyển tọa độ
+ Đặt các bước trên trong một vòng lặp
Thủ thuật “lật trang”
Đây là thủ thuật sử dụng chức năng có thể chứa nhiều hơn một trang màn hình của đa số các card màn hình. Một trang màn hình là một vùng nhớ trên card màn hình đủ để lưu trữ tất cả các điểm ảnh trên màn hình. Đối với những loại card màn hình có bộ nhớ đủ lớn, chúng ta có thể hiện nhiều trang ra màn hình. Nếu hình ảnh trên các trang gần giống nhau sẽ cho ta có cảm tưởng như hình đang di động.
Đối với các loại card màn hình có nhiều trang, mỗi trang được đánh số từ 0 đến 4
Khi sử dụng nhiều trang màn hình để thể hiện hình ảnh từng trang ra màn hình, chúng ta phải lật trang màn hình theo giải thuật sau:
Các bước thực hiện lật trang màn hình:
+ Khởi tạo 2 biến thiết lập active, visual kiểu word
+ Thực hiện vòng lặp
Repeat
setvisualPage(visual); {xem trang màn hình visual}
setActivePage(active); {kích hoạt trang active}
<các thủ tục vẽ hình>
{hoán vị hai trang màn hình}
Temp:=visual;
Visual:=active;
Active:=temp;
Until<điều kiện thoát vòng lặp>
Repeat
setvisualPage(visual); {xem trang màn hình visual}
setActivePage(active); {kích hoạt trang active}
<các thủ tục vẽ hình>
{hoán vị hai trang màn hình}
Temp:=visual;
Visual:=active;
Active:=temp;
Until<điều kiện thoát vòng lặp>
Lưu ý: khi sử dụng thủ thuật lật trang màn hình đôi lúc một số màn hình không hỗ trợ kỹ thuật này và dẫn đến một lỗi đồ họa. Do đó thường ta phải kiểm tra bằng hàm DetectGraph để dò tìm loại màn hình và mode màn hình đang sử dụng trước khi sử dụng kỹ thuật lật trang.
Một số ví dụ minh họa
Ví dụ 1: Vẽ quả bóng chuyển động theo trục đứng bằng kỹ thuật vẽ xóa
Uses crt,graph;
Const d=500;
Var
Mh,md,r,t,g,x,y:integer;
Begin
{khởi tạo đồ họa}
mh:=detect;
initgraph(mh,md,’c:\BP\BGT’);
{vẽ mặt phẳng}
g:=1; x:=300; r:=20;
bar(200,round(g/2*25*25)+55,500,round(g/2*25*25)+75);
{vẽ quả bóng di chuyển}
Repeat
Begin
{vẽ quả bóng rơi từ trên xuống}
t:=0;
repeat
begin
g:=1; y:=round(g/2*t*t)+30;
setfillstyle(1,13); fillellipse(x,y,r,r);
delay(d);
setcolor(0);
setfillstyle(1,0); fillEllipse(x,y,r,r);
t :=t+1;
end
until t>=25;
{vẽ quả bomgs di chuyển từ dưới lên}
t:=25; y:=round(g/2*25*25)+30;
repeat
begin
g :=1;
setfillstyle(1,13); fillellipse(x,y,r,r);
delay(d);
setcolor(0);
setfillstyle(1,0); fillellipse(x,y,r,r);
t :=t-1;
y:=round(g/2*t*t)+30;
end
until t<=0;
end
until keypressed;
readln;
closegraph;
end.
Ví dụ 2: Vẽ vòng tròn di động trên mặt phẳng bằng kỹ thuật lật trang màn hình
Program Vong_Tron_Di_Dong;
Uses Ctr,Graph;
Const r : Word =100;
Var
Gd,Gm : Integer;
XMax,Xmin : integer;
CenterY,x : integer;
Page1, Page2 : Word;
Right : Boolean;
Procedure CircleDraw(x : integer);
Begin
ClearDevice;
setLineStyle(Solidln,0,NormWidth);
SetColor(Yellow);
Circle(x,CenterY,r);
End;
Procedure Init;
Begin
DetecGraph(Gd,Gm);
If Not (Gd in[EGA,VGA,HercMono]) Then
Begin
Writeln(‘khong lat trang man hinh duoc’);
Halt(1);
End;
InitGraph(Gd,Gm,’C:\BP\BGI’);
If GraphResult<>GrOK Then Halt(1);
SetBkColor(LightBlue);
End;
BEGIN
Init;
CenterY := GetMaxY Div 2;
XMin :=R;
XMax := GetMaxX – R;
X := XMin;
Page1 := 0;
Page2 := 1;
Right := True;
Repeat
SetVisualPage(Page1); {xem trang page1}
SetActivePage(Page2); {kích hoạt trang page 2}
{vẽ đối vòng tròn}
CircleDraw(x);
If Right Then
If X <Xmax Then
X := x+10
Else
Begin
X :=X-10;
Right :=False;
End
Else
If X > XMin Then
X := X-10
Else
Begin
X := X+10;
Right := True;
End;
Delay(1000);
ClearDevice;
Page1 := 1-page1;
Page2 := 1-Page2;
Until KeyPressed;
CloseGraph;
End.
Sưu tầm
Nhận xét
Đăng nhận xét