![]() |
|
|
#16
|
||||
|
||||
|
По вопросу swf к его величеству Поиску, а с таймером примерно так:
Код:
var
Count : Integer; // глобальная переменная
procedure Timer(Sender: TObject);
begin
BitBlt(Куда (в какой Canvas.Handle->), x, y, width, height, Canvas[Count].Handle, 0, 0, SRCCOPY);
inc(Count);
if Count > Length(Canvas) then
Count := 0;
end; |
|
#17
|
|||
|
|||
|
Цитата:
Цитата:
|
|
#18
|
||||
|
||||
|
1. TImage, TPaintBox, напрямую на форму и т.д.
2. Функция BitBlt работает непосредственно с канвасом (холстом), а TCanvas - класс, его канвас (холст) это - Canvas.Handle аналог DC в API. Можно воспользоваться методами TCanvas для копирования, к примеру - CopyRect, Draw. |
|
#19
|
|||
|
|||
|
подскажите пожалуйста, где ошибка?
Код:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, Grids, StdCtrls;
type
TForm1 = class(TForm)
Frames: TStringGrid;
Page: TImage;
procedure PageMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure PageMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure PageMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure FormCreate(Sender: TObject);
procedure FramesClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
f:boolean = false;
Can : array of TCanvas;
n:integer = 0;
implementation
{$R *.dfm}
procedure TForm1.PageMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
f:=true;
page.canvas.MoveTo(x,y);
end;
procedure TForm1.PageMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
if f then page.canvas.LineTo(x,y);
end;
procedure TForm1.PageMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
Var t:integer;
begin
f:=false;
for t := n to 9 do
can[t] := page.Canvas;
end;
procedure TForm1.FormCreate(Sender: TObject);
var i : Integer;
begin
SetLength(Can, 10);
for i := 0 to 9 do
Can[i] := TCanvas.Create;
page.canvas.Pen.Color:=clWhite;
page.Canvas.Rectangle(0,0,page.Width,page.Height);
page.canvas.Pen.Color:=clBlack;
for i := 0 to 9 do
can[i] := page.Canvas;
for i := 0 to 9 do
frames.Cells[i,0]:= inttostr(i+1);
BitBlt(page.canvas.Handle, 0, 0, width, height, Can[0].Handle, 0, 0, SRCCOPY);
end;
procedure TForm1.FramesClick(Sender: TObject);
begin
n:=frames.Col;
BitBlt(page.canvas.Handle, 0, 0, width, height, Can[frames.col].Handle, 0, 0, SRCCOPY);
end;
end.ну и исходник сам прилагается |
|
#20
|
||||
|
||||
|
А что нужно получить?
Код:
BitBlt(page.canvas.Handle, 0, 0, width, height, Can[frames.col].Handle, 0, 0, SRCCOPY); |
|
#21
|
||||
|
||||
|
Цитата:
Или это так задумано, чтобы врагов запутать? Последний раз редактировалось angvelem, 12.08.2011 в 22:07. |
|
#22
|
||||
|
||||
|
Немного подправил твой код. Посмотри, это то что нужно:
|