Форум: "Начинающим";
Текущий архив: 2016.01.17;
Скачать: [xml.tar.bz2];
ВнизPaintBox Найти похожие ветки
← →
ElenkaG (2014-07-06 12:35) [0]Ребят,помогите!!!!! Нигде не могу найти решение это проблемы! Требуется написать программу с использованием PaintBox, суть проги в следующем: Пользователь вводить размеры прямоугольника,круга или многоугольника в строки Edit (н-р: длина,ширина для прямоугольника) и на Канве в PaintBox должно по клику мыши нарисовать. Проблема в следующем: нужно чтоб фигура размещалась по центру независоми от размера,например если размер канвы 300*300,а ращмер фигуры 1000*1000, то как быть,чтоб за пределы не выходила фигура и чтоб масштабировалсь с расположением посередине,может как то можно сделать без использвания паинтбоакса???? Огромнейшее спасибо,всем кто откликнется!!!!!
вот код того что я написала:
Код:
unit UnitP;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls, Buttons;
type
TForm1 = class(TForm)
Edit1: TEdit;
Edit2: TEdit;
Label1: TLabel;
Label2: TLabel;
BitBtn1: TBitBtn;
PaintBox1: TPaintBox;
procedure BitBtn1Click(Sender: TObject);
procedure PaintBox1Paint(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
x,y: integer;
StrA: string;
StrB: string;
m, k, mk: real;
h,b,h1,b1,x1,y1: integer;
implementation
{$R *.dfm}
procedure TForm1.BitBtn1Click(Sender: TObject);
begin
StrA:= Edit1.Text;
StrB:= Edit2.Text;
b:= StrToIntDef(Edit1.Text,0);
h:= StrToIntDef(Edit2.Text,0);
h1:= 250;
b1:= 250;
x1:= abs((b - b1) div 2);
y1:= abs((h - h1) div 2);
x:= b + x1 ; //ввод размеров сечения
y:= h + y1;
k:= 1;
m:= 1;
mk:= 1;
if b > b1 then // ограничение границ
m:= b1 / (1.3 * b - 0.5 * b1);
if h > h1 then
k:= h1 / (y+325);
if m > k then mk:= k else
mk:= m;
if mk <> 1 then
begin
x:= round(x * mk);
y:= round (y * mk);
x1:= round(abs((x - b1) div 2)*mk);
y1:= round(abs((y - h1) div 2) * mk);
end;
PaintBox1.Canvas.Rectangle(0,0,250,250);
PaintBox1.Canvas.Brush.Color:= clSilver;// отрисовка сечения
PaintBox1.Canvas.Rectangle(x1,y1,x,y);
PaintBox1.Canvas.Brush.Color:= clWhite;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
end;
procedure TForm1.PaintBox1Paint(Sender: TObject);
begin
PaintBox1.Color:= clWhite;
with PaintBox1, Canvas do
begin
Pen.Color:= clBlack;
Rectangle(0,0,250,250); //создание канвы(основного фона)
end;
end;
end.
← →
KilkennyCat © (2014-07-07 11:29) [1]
> Требуется написать программу с использованием PaintBox
> может как то можно сделать без использвания паинтбоакса?
определись.
вопросы геометрии вообще к программированию не относятся.
все единицы измерения - условны. поэтому просто ограничь введение пользователем максимальную цифру размерами паинтбокса, и надейся, что пользователь будет гораздо умнее и умножит их на коэффициент.
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2016.01.17;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.001 c