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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 04.10.2014, 19:21   #1
Zaraaa
Пользователь
 
Регистрация: 19.04.2013
Сообщений: 83
По умолчанию Масштабирование по центру

Здравствуйте! У меня не получается масштабирование ПО ЦЕНТРУ Delphi. Помогите исправить.
Код:
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, StdCtrls, Buttons;
 
type
  TForm1 = class(TForm)
    Button1: TButton;
    Image1: TImage;
    btn1: TBitBtn;
    btn2: TBitBtn;
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure btn1Click(Sender: TObject);
    procedure btn2Click(Sender: TObject);
 
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
const pi=3.14;
var
  Form1: TForm1;
  w,h:integer;
implementation
 
{$R *.dfm}
 
Procedure DrawStrelka(Cn:Tcanvas;x1,y1,x2,y2:integer;fhs:integer=25;a:integer=30);
  var ugol:real;
begin
     Cn.MoveTo(x1,y1);
     Cn.LineTo(x2,y2);
     if (abs(x2-x1)+abs(y1-y2))>0 then begin
     if (x2-x1)<>0 then
     ugol:=arctan(((y2-y1)/((x2-x1))))
     else ugol:=pi/2;
     if x2-x1>0 then ugol:=ugol+pi;
     if (y2-y1>0) and ((x2-x1)=0) then ugol:=-pi/2;
     Cn.LineTo(round((x2+(cos(ugol-30*pi/180)*fhs))),round(y2+(sin(ugol-30*pi/180)*fhs)));
     Cn.MoveTo(x2,y2);
     Cn.LineTo(round((x2+(cos(ugol+30*pi/180)*fhs))),round(y2+(sin(ugol+30*pi/180)*fhs)));
  end;
end;
 
procedure DrawPole;
var x,y:integer;
begin
 
// рисуем ось  ОY
   DrawStrelka(form1.image1.CANVAS,w,form1.image1.Height-5,w,5,10);
// рисуем ось ОX
   DrawStrelka(form1.image1.CANVAS,5,h,form1.image1.Width-5,h,10);
   // Деления  на оси ОХ
   form1.Image1.CANVAS.TextOut(w+3,h+3,'0');
   for x:=-10 to 10 do begin
     form1.Image1.CANVAS.MoveTo(w+30*x,h-5);
     form1.Image1.CANVAS.lineTo(w+30*x,h+5);
     form1.Image1.CANVAS.TextOut(w+30*x,h-20,inttostr(x));
 
 
     end;
     // Деления  на оси ОY
 
    for y:=-15 to 15 do begin
     form1.image1.CANVAS.MoveTo(w-5,h-30*y);
     form1.image1.CANVAS.lineTo(w+5,h-30*y);
     form1.Image1.CANVAS.TextOut(w+7,h-5-y*30,inttostr(y));
 
   end;
 
  end;
 
procedure Fx;
var x,y:real;
begin
  x:=0.1;
  form1.Image1.CANVAS.MoveTo(w+round(30*x),h-30*round(ln(x)));
  form1.Image1.CANVAS.Pen.Color:=clblue;
  form1.Image1.CANVAS.Pen.Width:=2;
  repeat
    y:=ln(x);
    form1.Image1.CANVAS.lineTo(w+round(30*x),h-round(30*y));
    x:=x+0.01;
   until x>10.01;
end;
 
procedure Ft;
var x,y,t,a:real;
begin
  a:=strtofloat(inputbox('Ввод значений параметров','Введите значение параметра а',''));
  t:=-20;
  x:=a*cos(t)+a*t*sin(t);
  y:=a*sin(t)-a*t*cos(t);
  form1.Image1.CANVAS.MoveTo(w+round(30*x),h-round(30*y));
  form1.Image1.CANVAS.Pen.Color:=clred;
  repeat
    x:=a*cos(t)+a*t*sin(t);
    y:=a*sin(t)-a*t*cos(t);
    form1.Image1.CANVAS.lineTo(w+round(30*x),h-round(30*y));
    t:=t+0.01;
   until t>20.2;
end;
 
procedure TForm1.FormCreate(Sender: TObject);
begin
w:=image1.Width div 2;
h:=image1.Height div 2;
 
end;
 
procedure TForm1.Button1Click(Sender: TObject);
begin
 DrawPole;
 Fx;
 ft;
end;
 
procedure TForm1.btn1Click(Sender: TObject);
begin
 Image1.Stretch:=true;
Image1.Width:=Image1.Width+10;
Image1.Height:=Image1.Height+10;
end;
 
procedure TForm1.btn2Click(Sender: TObject);
begin
Image1.Stretch:=true;
Image1.Width:=Image1.Width-10;
Image1.Height:=Image1.Height-10;
end;
 
end.
Вложения
Тип файла: rar 1.rar (177.1 Кб, 6 просмотров)

Последний раз редактировалось Zaraaa; 04.10.2014 в 20:03.
Zaraaa вне форума Ответить с цитированием
Старый 04.10.2014, 19:27   #2
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

Аффтар, чего сделать-то хочешь?

Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 04.10.2014, 20:25   #3
Zaraaa
Пользователь
 
Регистрация: 19.04.2013
Сообщений: 83
По умолчанию

Цитата:
Сообщение от min@y™ Посмотреть сообщение
Аффтар, чего сделать-то хочешь?
МАСШТАБИРОВАНИЕ ПО ЦЕНТРУ

Последний раз редактировалось Zaraaa; 04.10.2014 в 20:29.
Zaraaa вне форума Ответить с цитированием
Старый 04.10.2014, 20:29   #4
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

Цитата:
МАСШТАБИРОВАНИЕ ПО ЦЕНТРУ
ааааа, ну теперь понятно, почему никто не отвечает.
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 05.10.2014, 17:25   #5
Zaraaa
Пользователь
 
Регистрация: 19.04.2013
Сообщений: 83
По умолчанию

у меня в btn1(увеличение) и btn2 (уменьшение) идет криво, как сделать по центру. Именно в этой части кода:
Код:
procedure TForm1.btn1Click(Sender: TObject);
begin
 Image1.Stretch:=true;
Image1.Width:=Image1.Width+10;
Image1.Height:=Image1.Height+10;
end;
 
procedure TForm1.btn2Click(Sender: TObject);
begin
Image1.Stretch:=true;
Image1.Width:=Image1.Width-10;
Image1.Height:=Image1.Height-10;
end;
 
end.
Zaraaa вне форума Ответить с цитированием
Старый 05.10.2014, 17:40   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

А не проще ли отценнтрировать их в дизайне а потом выставить свойство anchor, чтоб кнопки не меняли своих привязок?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 05.10.2014, 17:40   #7
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

Код:
Image1.Center:= true;
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 05.10.2014, 18:48   #8
Zaraaa
Пользователь
 
Регистрация: 19.04.2013
Сообщений: 83
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
А не проще ли отценнтрировать их в дизайне а потом выставить свойство anchor, чтоб кнопки не меняли своих привязок?
а как можно оцентрировать в дизайне? к примеру?
Zaraaa вне форума Ответить с цитированием
Старый 05.10.2014, 19:02   #9
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

Блин, грустно видеть, как юное поколение превращается в тупых тёток из бухгалтерии, которые даже при появлении на экране окошка с сообщением на русском языке и единственной кнопкой ОК сразу подымают вселенскую панику и зовут тыжсисадминов. Я, когда учился, не боялся экспериментировать.
Вот есть у тебя object inspector. Неужели тебе проще создать 100500-ю изжёванную тему на куче форумов вместо того, чтобы самому не пожмакать по свойствам компонентов и посмотреть, что получится?
Изображения
Тип файла: jpg 2.jpg (71.1 Кб, 118 просмотров)
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 05.10.2014, 19:37   #10
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
а как можно оцентрировать в дизайне? к примеру?
Легко. В Делфи есть инструменты выравнивания (На скрине Миная они сразу над надписью "Ну ты что?"). С их помошью компоненты можно отцентрировать, а потом включив анкоры эти компоненты сами будут подстраиваться под размеры формы.
А включаются они где-то в меню View (Вид) - Toolbar
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Выравнивание по центру swish HTML и CSS 3 09.08.2012 20:32
Размещение по центру Vitaliy> HTML и CSS 3 16.07.2012 15:09
Выравнивание по центру Андрей-прог HTML и CSS 2 17.05.2012 09:27
выравнивание по центру ruavia3 Microsoft Office Access 5 03.12.2009 09:30
Заголовки по центру doniyor БД в Delphi 7 18.08.2009 08:21