никак ненайду решения одного явления.
Нужно создать канву для отрисовки изображений переменного
размера. Беру 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.
перерисовка компонента :(
Модераторы: Duncon, Naeel Maqsudov, Игорь Акопян, Хыиуду
я пробовал добавлять Image1.SetBounds() всё работает как
раньше. То-есть если на канве что-либо нарисовать до увеличения
размера (это когда полосы прокрутки в ScrollBox не проявляются) то при
увеличении длинны Image в ScrollBox появляются полосы прокрутки, когда
пытаюсь посмотреть скрытую часть канвы то вижу вместо рисунка линии пустое место
ops:
раньше. То-есть если на канве что-либо нарисовать до увеличения
размера (это когда полосы прокрутки в ScrollBox не проявляются) то при
увеличении длинны Image в ScrollBox появляются полосы прокрутки, когда
пытаюсь посмотреть скрытую часть канвы то вижу вместо рисунка линии пустое место

Спасибо за совет , я решил больше не мучиться поставить
максимальный размер канвы , а полосы прокрутки ScrollBox
скрыть и показывать при определённых условиях :?
максимальный размер канвы , а полосы прокрутки ScrollBox
скрыть и показывать при определённых условиях :?
Ура :lol: Случайно узнал решение :lol:
Просто при увеличении компонента Image - Canvas надо так-же
принудительно пропорционально увеличивать через
Image.Picture.Bitmap.Canvas.Width и всё тогда работает 8)
Просто при увеличении компонента Image - Canvas надо так-же
принудительно пропорционально увеличивать через
Image.Picture.Bitmap.Canvas.Width и всё тогда работает 8)