![]() |
|
#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; Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |
#17
|
|||
|
|||
![]() Цитата:
Цитата:
|
#18
|
||||
|
||||
![]() 1. TImage, TPaintBox, напрямую на форму и т.д.
2. Функция BitBlt работает непосредственно с канвасом (холстом), а TCanvas - класс, его канвас (холст) это - Canvas.Handle аналог DC в API. Можно воспользоваться методами TCanvas для копирования, к примеру - CopyRect, Draw. Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |
#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); Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |
#21
|
||||
|
||||
![]() Цитата:
Или это так задумано, чтобы врагов запутать? Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. Последний раз редактировалось angvelem, 12.08.2011 в 22:07. |
#22
|
||||
|
||||
![]() Немного подправил твой код. Посмотри, это то что нужно:
Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |