перерисовка компонента :(
Добавлено: 27 май 2006, 17:29
никак ненайду решения одного явления.
Нужно создать канву для отрисовки изображений переменного
размера. Беру ScrollBox кладу на него Image, свойство
Image.Align := alClient
Теперь если перед тем как что-либо нарисовать на канве
сначала её увеличить то при прокрутке ScrollBox канва видна вовсём
своём размере. А если перед увеличением размера что-либо нарисовать и потом увеличить Image то при прокрутке ScrollBox
видна только часть Image которая вписывалась в размер ScrollBox.
Какой метод применить что-бы избавиться от этого бага :?:
Для более ясного представления привожу пример -
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls;
type
TForm1 = class(TForm)
ScrollBox1: TScrollBox;
Image1: TImage;
Button1: TButton;
Button2: TButton;
Button3: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
//если использовать эту процедуру первой то никаких проблем нет
procedure TForm1.Button2Click(Sender: TObject);
begin
Image1.Width := 300;
end;
//а если перед увеличением размера использовать эти процедуры
//то при прокрутке видна только часть канвы
procedure TForm1.Button1Click(Sender: TObject);
begin
Image1.Canvas.MoveTo(0,50);
Image1.Canvas.LineTo(300,50);
Image1.Canvas.MoveTo(100,0);
Image1.Canvas.LineTo(100,132);
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
Image1.Canvas.MoveTo(50,0);
Image1.Canvas.LineTo(40,132);
end;
end.
Нужно создать канву для отрисовки изображений переменного
размера. Беру ScrollBox кладу на него Image, свойство
Image.Align := alClient
Теперь если перед тем как что-либо нарисовать на канве
сначала её увеличить то при прокрутке ScrollBox канва видна вовсём
своём размере. А если перед увеличением размера что-либо нарисовать и потом увеличить Image то при прокрутке ScrollBox
видна только часть Image которая вписывалась в размер ScrollBox.
Какой метод применить что-бы избавиться от этого бага :?:
Для более ясного представления привожу пример -
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls;
type
TForm1 = class(TForm)
ScrollBox1: TScrollBox;
Image1: TImage;
Button1: TButton;
Button2: TButton;
Button3: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
//если использовать эту процедуру первой то никаких проблем нет
procedure TForm1.Button2Click(Sender: TObject);
begin
Image1.Width := 300;
end;
//а если перед увеличением размера использовать эти процедуры
//то при прокрутке видна только часть канвы
procedure TForm1.Button1Click(Sender: TObject);
begin
Image1.Canvas.MoveTo(0,50);
Image1.Canvas.LineTo(300,50);
Image1.Canvas.MoveTo(100,0);
Image1.Canvas.LineTo(100,132);
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
Image1.Canvas.MoveTo(50,0);
Image1.Canvas.LineTo(40,132);
end;
end.