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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 16.09.2012, 18:25   #1
popkorn
 
Регистрация: 16.09.2012
Сообщений: 3
По умолчанию графика в делфи

создать программу, выводящую на экран круговую диаграмму численности населения стан мира, для исходных данных построения диаграммы использовать введенные значения: кол-во стран, названия стран, численность населения каждой страны

эта программа только для 4-х стран, нужно чтобы сам вводил какое кол-во стран
Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, StdCtrls, Grids;

type
  TForm1 = class(TForm)
    StringGrid1: TStringGrid;
    Button1: TButton;
    Image1: TImage;
    Button2: TButton;
    Edit1: TEdit;
    Edit2: TEdit;
    Label1: TLabel;
    Label2: TLabel;
    Button3: TButton;
    Edit3: TEdit;
    Label3: TLabel;
    procedure Gistogramma();
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
implementation

{$R *.dfm}
var
  z:integer;
procedure TForm1.Gistogramma();
var
  p1,p2,p3,p4,sum:integer;
  ps1,ps2,ps3:real;
  x0,y0:integer;//центр диаграммы
  wx,wy:integer;//первая точка
  x1,y1,x2,y2,x3,y3:integer;//2я-4я точки
  r:integer;//радиус
begin
p1:= strtoint(stringgrid1.cells[1,1]);
p2:= strtoint(stringgrid1.cells[1,2]);
p3:= strtoint(stringgrid1.cells[1,3]);
p4:= strtoint(stringgrid1.cells[1,4]);
sum:= p1+p2+p3+p4;
Image1.Height:=300;
Image1.Width:=Image1.Height;
x0:=Image1.Width div 2;
y0:=Image1.Height div 2; //центр
r:=Image1.Width div 2;
wx:=x0+r;wy:=y0; //певая точка
ps1:=2*pi*p1/sum;//альфа
x1:=round(x0+r*cos(ps1));
y1:=round(y0+r*sin(ps1));

ps2:=ps1+2*pi*p2/sum;
x2:=round(x0+r*cos(ps2));
y2:=round(y0+r*sin(ps2));

ps3:=ps2+2*pi*p3/sum;
x3:=round(x0+r*cos(ps3));
y3:=round(y0+r*sin(ps3));

with form1.Image1.Canvas do
  begin
    brush.color:=clblue;
    Pie(x0-r,y0-r,x0+r,y0+r,x1,y1,wx,wy);
    brush.color:=clgreen;
    Pie(x0-r,y0-r,x0+r,y0+r,x2,y2,x1,y1);
    brush.color:=clyellow;
    Pie(x0-r,y0-r,x0+r,y0+r,x3,y3,x2,y2);
    brush.color:=clred;
    Pie(x0-r,y0-r,x0+r,y0+r,wx,wy,x3,y3);
  end;
with Form1.Canvas do
 begin
  brush.Color:=clblue;
  Rectangle(340,30,360,50);
  brush.Color:=clgreen;
  Rectangle(340,60,360,80);
  brush.Color:=clyellow;
  Rectangle(340,90,360,110);
  brush.Color:=clred;
  Rectangle(340,120,360,140)
 end;
end;

procedure TForm1.Button1Click(Sender: TObject);
  begin
   Gistogramma();
 end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  z:=StrToInt(Edit3.Text);
  Stringgrid1.Cells[0,0]:=Edit1.Text;
  Stringgrid1.Cells[1,0]:=Edit2.Text;
  Stringgrid1.ColCount:=2;
  Stringgrid1.RowCount:=z+1;
  Stringgrid1.ColWidths[0]:=150;
  Stringgrid1.ColWidths[1]:=210;
end;


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

end.

Последний раз редактировалось Stilet; 16.09.2012 в 18:38. Причина: дополнение
popkorn вне форума Ответить с цитированием
Старый 16.09.2012, 18:42   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
нужно чтобы сам вводил какое кол-во стран
Тогда тут придется все переписать.
И лучше будет использовать TChart
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 16.09.2012, 19:09   #3
popkorn
 
Регистрация: 16.09.2012
Сообщений: 3
По умолчанию

нужно именно через канвас
popkorn вне форума Ответить с цитированием
Старый 16.09.2012, 20:05   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Все равно переписывать...
Этот код совсем не годится так как тут четко прописано
Цитата:
with Form1.Canvas do
begin
brush.Color:=clblue;
Rectangle(340,30,360,50);
brush.Color:=clgreen;
Rectangle(340,60,360,80);
brush.Color:=clyellow;
Rectangle(340,90,360,110);
brush.Color:=clred;
Rectangle(340,120,360,140)
end;
Не более и не менее 4-х
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Графика в делфи Natasha190989 Общие вопросы Delphi 0 15.05.2011 16:09
Графика Делфи Vova777 Общие вопросы Delphi 8 04.01.2011 16:19
графика в делфи Lena neznayka Помощь студентам 15 16.06.2010 10:08
Графика в Делфи R_A_M_I_L7777777 Помощь студентам 14 27.03.2009 15:21
Графика в Делфи Killbrum Мультимедиа в Delphi 19 17.09.2008 22:29