Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.03.2011, 18:41   #1
Krendel'
Пользователь
 
Регистрация: 13.11.2008
Сообщений: 36
По умолчанию Изменение масштаба в TImage (как в TChart)

Собственно вопрос: мышью в TChart можно менять масштаб отображения графика, а можно ли реализовать подобное в TImage ?

я так понимаю что это можно сделать через OnMouseDown/Move/Up ?

Код:
type
TForm1 = class(TForm)
procedure FormMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
procedure FormMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
procedure FormMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
private
{Private declarations}
Capturing : bool;
Captured : bool;
StartPlace : TPoint;
EndPlace : TPoint;
public
{Public declarations}
end;

var
Form1: TForm1;

implementation

{$R *.DFM}

function MakeRect(Pt1 : TPoint; Pt2 : TPoint) : TRect;
begin
if pt1.x < pt2.x then
begin
Result.Left := pt1.x;
Result.Right := pt2.x;
end else
begin
Result.Left := pt2.x;
Result.Right := pt1.x;
end;
if pt1.y < pt2.y then
begin
Result.Top := pt1.y;
Result.Bottom := pt2.y;
end else
begin
Result.Top := pt2.y;
Result.Bottom := pt1.y;
end;
end;

procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
		Shift: TShiftState; X, Y: Integer);
begin
if Captured then
DrawFocusRect(Form1.Canvas.Handle,MakeRect(StartPlace,EndPlace));
StartPlace.x := X;
StartPlace.y := Y;
EndPlace.x := X;
EndPlace.y := Y;
DrawFocusRect(Form1.Canvas.Handle,MakeRect(StartPlace,EndPlace));
Capturing := true;
Captured := true;
end;

procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
		Y: Integer);
begin
if Capturing then
begin
DrawFocusRect(Form1.Canvas.Handle,MakeRect(StartPlace,EndPlace));
EndPlace.x := X;
EndPlace.y := Y;
DrawFocusRect(Form1.Canvas.Handle,MakeRect(StartPlace,EndPlace));
end;
end;

procedure TForm1.FormMouseUp(Sender: TObject; Button: TMouseButton;
		Shift: TShiftState; X, Y: Integer);
begin
Capturing := false;
end;
но я не разобрался как сделать, чтобы выделенная область масштабировалась на весь TImage, как это происходит в TChart
Krendel' вне форума Ответить с цитированием
Старый 10.03.2011, 09:16   #2
Krendel'
Пользователь
 
Регистрация: 13.11.2008
Сообщений: 36
По умолчанию

ап

*10 символов*
Krendel' вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Изменение размера TImage alexprey Общие вопросы Delphi 4 23.06.2010 21:17
Изменение масштаба BaRSyk174 Общие вопросы Delphi 3 30.11.2009 17:12
изменение масштаба ruavia3 Microsoft Office Excel 1 30.07.2009 09:20
Изменение вида Series в TChart ViNcHeStEr Помощь студентам 2 20.04.2009 16:17
Изменение размера - Сжатие BMP в TImage Air Помощь студентам 2 02.03.2008 17:00