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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 18.05.2011, 14:29   #1
Сергей58rus
Пользователь
 
Регистрация: 07.04.2011
Сообщений: 28
Вопрос Масштабирование объекта в дельфи

вроде сделал всё правильно но почему то масштаб не увеличивается...
подскажите где ошибка?
unit Unit1;
interface
uses
Unit2, Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Menus, ExtCtrls, StdCtrls, Buttons, ScktComp;

type
TForm1 = class(TForm)
GroupBox1: TGroupBox;
Image1: TImage;
MainMenu1: TMainMenu;
N1: TMenuItem;
N2: TMenuItem;
N3: TMenuItem;
N4: TMenuItem;
N5: TMenuItem;
N6: TMenuItem;
N7: TMenuItem;
N8: TMenuItem;
ComboBox1: TComboBox;
Label1: TLabel;
ComboBox2: TComboBox;
Label2: TLabel;
Timer1: TTimer;
BitBtn1: TBitBtn;
ComboBox3: TComboBox;
Label3: TLabel;
ComboBox4: TComboBox;
Label4: TLabel;
Button5: TButton;
Button6: TButton;
Button7: TButton;
Button8: TButton;
procedure N2Click(Sender: TObject);
procedure N6Click(Sender: TObject);
procedure ComboBox2Change(Sender: TObject);
procedure Image1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure Image1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure Timer1Timer(Sender: TObject);
procedure BitBtn1Click(Sender: TObject);
procedure ComboBox3Change(Sender: TObject);
procedure ComboBox4Change(Sender: TObject);
procedure Drow;

private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;
drag: boolean;
x0, y0: integer;
ClipRect: TRect;
x, y, ax, ay: integer;
koef: real;
implementation

{$R *.dfm}
procedure Tform1.Drow;
begin
koef:=1;
//ax:=50;
//ay:=50;
Image1.Canvas.FillRect(rect(0, 0, image1.width,image1.height));
Image1.Canvas.MoveTo(round(koef*ax+ 285),round(koef*ay+167));
Image1.Canvas.LineTo(round(koef*ax+ 275),round(koef*ay+157));
Image1.Canvas.LineTo(round(koef*ax+ 273),round(koef*ay+168));
Image1.Canvas.LineTo(round(koef*ax+ 285),round(koef*ay+167));
Image1.Canvas.MoveTo(round(koef*ax+ 265),round(koef*ay+155));
Image1.Canvas.LineTo(round(koef*ax+ 255),round(koef*ay+146));
Image1.Canvas.LineTo(round(koef*ax+ 253),round(koef*ay+158));
Image1.Canvas.LineTo(round(koef*ax+ 265),round(koef*ay+155));
Image1.Canvas.MoveTo(round(koef*ax+ 290),round(koef*ay+152));
Image1.Canvas.LineTo(round(koef*ax+ 280),round(koef*ay+162));
Image1.Canvas.MoveTo(round(koef*ax+ 270),round(koef*ay+140));
Image1.Canvas.LineTo(round(koef*ax+ 260),round(koef*ay+150));
Image1.Canvas.MoveTo(round(koef*ax+ 300),round(koef*ay+230));
Image1.Canvas.LineTo(round(koef*ax+ 300),round(koef*ay+170));
Image1.Canvas.MoveTo(round(koef*ax+ 350),round(koef*ay+200));
Image1.Canvas.LineTo(round(koef*ax+ 180),round(koef*ay+200));
Image1.Canvas.MoveTo(round(koef*ax+ 300),round(koef*ay+200));
Image1.Canvas.LineTo(round(koef*ax+ 230),round(koef*ay+150));
Image1.Canvas.LineTo(round(koef*ax+ 230),round(koef*ay+250));
Image1.Canvas.LineTo(round(koef*ax+ 300),round(koef*ay+200));
end;
procedure TForm1.N2Click(Sender: TObject);
{ðèñóåì îáúåêò}
begin
drow;
end;

procedure TForm1.N6Click(Sender: TObject);
begin
close;
end;

procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
{ïîëîæåíèå êóðñîðà ìûøè}
begin
x0:= 230;
y0:= 300;
Drag:= true;
end;

procedure TForm1.Image1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
{íàæàòèå íà êíîïêè ìûøè}
begin
if drag then begin
ax :=x-x0;
ay :=y-x0;
end;
drag := false;
end;

procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
{ïåðåäâèæåíèå îáúåêòà}
begin
if drag then
begin
ax :=x-x0;
ay :=y-x0;
drow;
end;

end;

procedure TForm1.Timer1Timer(Sender: TObject);
{òàéìåð äëÿ ïëàâíîãî ïåðåäâèæåíèÿ}
var
xp, yp:integer;
begin
xp:=ax;
yp:=ay;
end;

procedure TForm1.BitBtn1Click(Sender: TObject);
{î÷èñòêà ýêðàíà}
begin
PatBlt(Form1.Canvas.Handle, 0, 0, Form1.ClientWidth, Form1.ClientHeight, WHITENESS);
end;

procedure TForm1.ComboBox3Change(Sender: TObject);
{öâåò ôîíà}
begin
if ComboBox3.Itemindex=0 then
Image1.Canvas.brush.color:=clMaroon ;
drow;
if ComboBox3.Itemindex=1 then
Image1.Canvas.brush.color:=clYellow ;
drow;
if ComboBox3.Itemindex=2 then
Image1.Canvas.brush.color:=clFuchsi a;
drow;
if ComboBox3.Itemindex=3 then
Image1.Canvas.brush.color:=clAqua;
drow;
end;

procedure TForm1.ComboBox4Change(Sender: TObject);
{МАСШТАБИРОВАНИЕ}
begin
if ComboBox1.Itemindex =0 then
koef:= koef+ 2;
drow;
end.
Сергей58rus вне форума Ответить с цитированием
Старый 18.05.2011, 15:25   #2
Азамат Казанчев
Форумчанин
 
Регистрация: 25.04.2011
Сообщений: 110
По умолчанию

попробуй так
Код:
procedure TForm1.ComboBox4Change(Sender: TObject);
 {МАСШТАБИРОВАНИЕ}
 begin
 if ComboBox1.Itemindex <>-1 then
 koef:= koef+ 2;
 drow;
 end.
Азамат Казанчев вне форума Ответить с цитированием
Старый 18.05.2011, 15:40   #3
Сергей58rus
Пользователь
 
Регистрация: 07.04.2011
Сообщений: 28
По умолчанию

всё равно ничего не изменяется((

а можите какой нибудь пример скинуть я по нему попробую?
Сергей58rus вне форума Ответить с цитированием
Старый 18.05.2011, 16:22   #4
Сергей58rus
Пользователь
 
Регистрация: 07.04.2011
Сообщений: 28
По умолчанию

кое что сам разобрал, как масштаб увеличивать,
а как теперь сделать что бы с помощью ComboBox4 это делать??(

unit Unit1;

interface

uses
Unit2, Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Menus, ExtCtrls, StdCtrls, Buttons, ScktComp;

type
TForm1 = class(TForm)
GroupBox1: TGroupBox;
Image1: TImage;
MainMenu1: TMainMenu;
N1: TMenuItem;
N2: TMenuItem;
N3: TMenuItem;
N4: TMenuItem;
N5: TMenuItem;
N6: TMenuItem;
N7: TMenuItem;
N8: TMenuItem;
ComboBox1: TComboBox;
Label1: TLabel;
ComboBox2: TComboBox;
Label2: TLabel;
Timer1: TTimer;
BitBtn1: TBitBtn;
RadioButton1: TRadioButton;
RadioButton2: TRadioButton;
ComboBox3: TComboBox;
Label3: TLabel;
ComboBox4: TComboBox;
procedure Image1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure Image1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure Timer1Timer(Sender: TObject);
procedure ComboBox4Change(Sender: TObject);

procedure Drow;

private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;
drag: boolean;
x0, y0: integer;
ClipRect: TRect;
x1, y1, x, y, ax, ay: integer;
koef: real;
implementation

{$R *.dfm}
procedure Tform1.Drow;
begin
koef:=1;
Image1.Canvas.FillRect(rect(0, 0, image1.width,image1.height));
Image1.Canvas.MoveTo(round(koef*(ax +285)),round(koef*(ay+167)));
Image1.Canvas.LineTo(round(koef*(ax +275)),round(koef*(ay+157)));
Image1.Canvas.LineTo(round(koef*(ax +273)),round(koef*(ay+168)));
Image1.Canvas.LineTo(round(koef*(ax +285)),round(koef*(ay+167)));
Image1.Canvas.MoveTo(round(koef*(ax +265)),round(koef*(ay+155)));
Image1.Canvas.LineTo(round(koef*(ax +255)),round(koef*(ay+146)));
Image1.Canvas.LineTo(round(koef*(ax +253)),round(koef*(ay+158)));
Image1.Canvas.LineTo(round(koef*(ax +265)),round(koef*(ay+155)));
Image1.Canvas.MoveTo(round(koef*(ax +290)),round(koef*(ay+152)));
Image1.Canvas.LineTo(round(koef*(ax +280)),round(koef*(ay+162)));
Image1.Canvas.MoveTo(round(koef*(ax +270)),round(koef*(ay+140)));
Image1.Canvas.LineTo(round(koef*(ax +260)),round(koef*(ay+150)));
Image1.Canvas.MoveTo(round(koef*(ax +300)),round(koef*(ay+230)));
Image1.Canvas.LineTo(round(koef*(ax +300)),round(koef*(ay+170)));
Image1.Canvas.MoveTo(round(koef*(ax +350)),round(koef*(ay+200)));
Image1.Canvas.LineTo(round(koef*(ax +180)),round(koef*(ay+200)));
Image1.Canvas.MoveTo(round(koef*(ax +300)),round(koef*(ay+200)));
Image1.Canvas.LineTo(round(koef*(ax +230)),round(koef*(ay+150)));
Image1.Canvas.LineTo(round(koef*(ax +230)),round(koef*(ay+250)));
Image1.Canvas.LineTo(round(koef*(ax +300)),round(koef*(ay+200)));

procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
{ïîëîæåíèå êóðñîðà ìûøè}
begin
x0:=(round(koef+230));
y0:=(round(koef+300));
Drag:= true;
end;

procedure TForm1.Image1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
{íàæàòèå íà êíîïêè ìûøè}
begin
if drag then begin
ax :=x-x0;
ay :=y-x0;
end;
drag := false;
end;

procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
{ïåðåäâèæåíèå îáúåêòà}
begin
if drag then
begin
ax :=x-x0;
ay :=y-x0;
drow;
end;
procedure TForm1.ComboBox4Change(Sender: TObject);
{óâåëè÷åíèå ìàñøòàáà}
begin
if ComboBox4.Itemindex=0 then
koef:=1.2;
drow;
end.
Сергей58rus вне форума Ответить с цитированием
Старый 18.05.2011, 18:33   #5
Сергей58rus
Пользователь
 
Регистрация: 07.04.2011
Сообщений: 28
По умолчанию

всё))
спасибо, я разобрался))
Сергей58rus вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Заливка и масштаб объекта в дельфи Сергей58rus Помощь студентам 0 05.05.2011 19:22
CLR. Ошибка C3918. Как вызвать из объекта обработчик, переданный родителю объекта от деда? Stilet Общие вопросы .NET 0 15.01.2011 17:49
Масштабирование и поворот графического объекта haros Паскаль, Turbo Pascal, PascalABC.NET 3 02.03.2009 15:24
С помощью методов и свойств объекта осуществляется управление терминалом. Имя (идентификатор) объекта User>lia Общие вопросы Delphi 4 16.01.2009 16:37
Как поменять одну из текстур объекта не меняя все остальные и без повторной загрузки объекта в GLScene DomKr@t Мультимедиа в Delphi 0 14.12.2008 01:52