![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
2 Image а
e}{e © (2003-05-17 02:25:00)
Суть такая : есть 2 имэйджа - один большой, другой маленький. На одном(большой) линии, на другом(маленький) - прямоугольник.
Кто знает ответьте пожалуйста:
Каким образом таскать маленький Image по большому (и реально ли это вообще)?
И как для маленького Image сделать непрозрачными линии большого, т.е. чтобы при движении мал. Image упирался в лиии большого?
Delphi5.01 (2003-05-18 10:53:00) [1]...
private
{ Private declarations }
public
{ Public declarations }
ObjectBitMap: TBitMap;
BackBitMap: TBitMap;
BufferBitMap: TBitMap;
Round: Integer; //dlina kubika setki
end;
...
procedure TForm1.FormCreate(Sender: TObject);
begin
ObjectBitMap:=TBitMap.Create;
ObjectBitMap.LoadFromFile("pic.bmp");
BackBitMap:=TBitMap.Create;
BackBitMap.LoadFromFile("bk.bmp");
BufferBitMap:=TBitMap.Create;
BufferBitMap.LoadFromFile("bk.bmp");
Round:=20;
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
ObjectBitMap.Free;
BackBitMap.Free;
BufferBitMap.Free;
end;
procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
var xx,yy: Integer;
begin
xx:=Round*(x div Round);
yy:=Round*(y div Round); ( 0,0,BackBitMap)...
private
{ Private declarations }
public
{ Public declarations }
ObjectBitMap: TBitMap;
BackBitMap: TBitMap;
BufferBitMap: TBitMap;
Round: Integer; //dlina kubika setki
end;
...
procedure TForm1.FormCreate(Sender: TObject);
begin
ObjectBitMap:=TBitMap.Create;
ObjectBitMap.LoadFromFile("pic.bmp");
BackBitMap:=TBitMap.Create;
BackBitMap.LoadFromFile("bk.bmp");
BufferBitMap:=TBitMap.Create;
BufferBitMap.LoadFromFile("bk.bmp");
Round:=20;
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
ObjectBitMap.Free;
BackBitMap.Free;
BufferBitMap.Free;
end;
procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
var xx,yy: Integer;
begin
xx:=Round*(x div Round);
yy:=Round*(y div Round);
BufferBitMap.Canvas.Draw(0,0,BackBitMap);
BufferBitMap.Canvas.Draw(xx,yy,ObjectBitMap);
Form1.Canvas.Draw(0,0,BufferBitMap);
end;
dla poluchenia ludshego rezultata ispolzui BitBlt vmesto Canvas.Draw, nemnogo rudnei vishitivat koordinati no skorost povisetsa v 8 raz kak minimum.
Jelau udachi!