Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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
15-1431344437
Кто б сомневался
2015-05-11 14:40
2016.01.17
Когда программа бесплатная, но с ограниченным функционалом


15-1431933898
Pavia
2015-05-18 10:24
2016.01.17
Зловред в овечей шкере


2-1404704180
Sw
2014-07-07 07:36
2016.01.17
Cоздать процедуру в базе interbase через delphi


4-1275072763
Циркуль
2010-05-28 22:52
2016.01.17
Как узнат содержит ли шрифт символы определенной кодовой страницы


15-1432146729
D.N. Polezhaev
2015-05-20 21:32
2016.01.17
Странное поведение Internet Explorer





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский