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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 04.10.2014, 03:26   #1
mishammm
Форумчанин
 
Регистрация: 21.09.2013
Сообщений: 232
По умолчанию изменение цвета осей и графика функции в Delphi

Здравствуйте. Есть нарисованный график на компоненте Image с помощью Canvas. Я хочу разработать пару пунктов меню чтобы можно было менять цвет и самого нарисованного графика и чтобы можно было изменить цвет осей х, у. Если писать так, If ColorDialog1.Execute then
image1.Canvas.Brush.Color:=clRed; то оно применяет для всех одинаковый цвет. можно ли как то отдельно менять цвет для осей и отдельно для нарисованого графика? Спасибо!

Вот на всякий случай код:

Код:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Edit2: TEdit;
    Label1: TLabel;
    Label2: TLabel;
    Image1: TImage;
    Button1: TButton;
    ColorDialog1: TColorDialog;
    Button2: TButton;
    MainMenu1: TMainMenu;
    N1: TMenuItem;
    N2: TMenuItem;
    N3: TMenuItem;
    procedure Button1Click(Sender: TObject);
    procedure N1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure N2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation
uses
    unit2;

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
const
     mash=30;
var
    a,b:integer;
    x0,y0:integer;
    x,y:real;


begin

  //clear picture
       Image1.Canvas.Pen.Color:=clWhite;
  image1.canvas.Rectangle(0,0,ClientWidth,ClientHeight);

a:=StrtoInt(Edit1.Text);
 b:=StrtoInt(Edit2.Text);



 x0:=image1.Width div 2;
 y0:=image1.Height div 2;

     
     
      Image1.Canvas.Pen.Color:=clgreen;
     with image1.Canvas do
     begin
         Pen.Width:=2;
      MoveTo(x0,0);
     LineTo(x0,ClientHeight);
       moveto(0,y0);
       LineTo(ClientWidth,y0);
       end;
       //ìàëþºìî ãðàô³ê ô=¿
        Image1.Canvas.Pen.Color:=clred;
       image1.Canvas.Pen.Width:=1;
       x:=-10;
      y:=(1/2*a*b)*(abs(sin(x))-sin(x));
       Image1.Canvas.MoveTo(x0+trunc(x*mash),y0+trunc(y*mash));

       repeat
       x:=x+0.1;

      y:=(1/2*a*b)*(abs(sin(x))-sin(x));
       image1.Canvas.Lineto(x0+trunc(x*mash),y0+trunc(y*mash));
       until x>=10;

end;
mishammm вне форума Ответить с цитированием
Старый 04.10.2014, 04:58   #2
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

Код:
var
  Form1: TForm1;
  c1, c2: TColor;
...
procedure TForm1.Button1Click(Sender: TObject);
...
  x0 := Image1.Width div 2;
  y0 := Image1.Height div 2;

  with Image1.Canvas do
  begin
    Pen.Color := c1;
    Pen.Width := 2;
    MoveTo(x0, 0);
    LineTo(x0, ClientHeight);
    MoveTo(0, y0);
    LineTo(ClientWidth, y0);
    Pen.Color := c2;
    Pen.Width := 1;
  end;

  x := -10;
...
procedure TForm1.Button2Click(Sender: TObject);
begin
  if ColorDialog1.Execute then
    c1 := ColorDialog1.Color;
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
  if ColorDialog1.Execute then
    c2 := ColorDialog1.Color;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  c1 := clgreen;
  c2 := clred;
end;
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 04.10.2014, 10:36   #3
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
Восклицание

что-то знакомое!
Изображения
Тип файла: jpg 19.jpg (47.1 Кб, 123 просмотров)
Вложения
Тип файла: rar 5672.rar (188.3 Кб, 9 просмотров)
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Изменение цвета в функции SpeedButton1Click dypel C++ Builder 0 02.06.2014 17:24
Плавное изменение цвета панели (Delphi) Andrey_RTF Помощь студентам 2 27.05.2012 15:47
Изменение цвета определенных ячеек в StringGrid. Delphi Multiman Помощь студентам 2 04.10.2011 20:23
Паскаль, графика. Вращение октаэдра вокруг осей координат. San-ch Паскаль, Turbo Pascal, PascalABC.NET 1 28.02.2011 04:25
Процедура для разметки осей и тип линии графика Brigina Помощь студентам 1 20.01.2009 08:33