Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Пытаемся рисовать...

367
03 марта 2007 года
Meatcoins
303 / / 18.01.2006
Код:
unit Tomo;

interface

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

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
MessageBox(0,'Hi!','Hi!',MB_OK);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
Form1.Refresh;

 with Form1.Canvas do begin
 Brush.Color := clBlue;
 Brush.Style := bsSolid;
 Pen.Color := clBlue;
 Rectangle(0,0,100,100);
 end;
                {
 // Form1.Canvas.Brush.Color := RGB(0,0,0);
  Form1.Canvas.Brush.Color := clRed;
  Form1.Canvas.Brush.Style := bsSolid;
  Form1.Canvas.Pen.Color := clRed;
  Form1.Canvas.Rectangle(0,0,100,100);

  Form1.Canvas.Pen.Mode := pmCopy;
  Form1.Canvas.Pen.Style := psSolid;
  Form1.Canvas.Pen.Width := 2;
 // Form1.Canvas.Pen.Color := RGB(0,0,0);
  Form1.Canvas.Pen.Color := clRed;


  Form1.Canvas.MoveTo(50,50);
  Form1.Canvas.LineTo(100,100);
  Form1.Canvas.Ellipse(150,250,100,340);
  Form1.Refresh;  }
end;

end.

Не могу понять почему при запуске проги в форме нет ничего кроме кнопки!
Когда не было комментариев, всё равно в форме ничего не рисовалось!
Что делать?
257
03 марта 2007 года
kosfiz
1.6K / / 18.09.2005
добавь следующее:
 
Код:
procedure TForm1.FormResize(Sender: TObject);
begin
Canvas.FillRect(Canvas.ClipRect);
end;
367
03 марта 2007 года
Meatcoins
303 / / 18.01.2006
Я уж подумал, что с ума схожу - пишу очевидные вещи, а эти вещи не появляются на Form1!
Оказывается надо было не в FormCreate, а в FormResize всё это запихивать!
Спасибо!
Код:
procedure TForm1.FormResize(Sender: TObject);
begin
Form1.Refresh;
 with Form1.Canvas do begin
 Brush.Color := RGB(0,0,0);
 Brush.Style := bsSolid;
 Pen.Color := RGB(255,0,0);
 Rectangle(0,0,100,100);
 Rectangle(0,200,20,300);
 end;
end;

Всё работает!
367
03 марта 2007 года
Meatcoins
303 / / 18.01.2006
Код:
// Эта функция что-то рисует просто!
procedure TForm1.GaussiansPrintByPixels();
var
cordX1,cordX2,cordY1,cordY2,X1,X2,Y1,Y2: integer;
begin

......
Form1.Canvas.Ellipse(X1,Y1,X2,Y2);
......
end;

// А эта функция нужна для перерисовки,
// например, из-за того, что пользователь изменил
// координаты Эллипса!
procedure TForm1.Button1Click(Sender: TObject);
begin
GaussiansPrintByPixels();
end;

Функция Button1Click нужна для перерисовки, например, из-за того, что пользователь изменил координаты Эллипса! Но старый эллипс при этом остаётся!!!
Как убрать старый эллипс с экрана!?
23K
03 марта 2007 года
4ipset
1 / / 14.11.2006
Закрась его таким же эллипсом но с цветом формы.
367
04 марта 2007 года
Meatcoins
303 / / 18.01.2006
 
Код:
for i := 0 to 20 do begin
pixcol := Form1.Canvas.Pixels[X1+mo-i,Y1+n];
pixcol2 := Form1.Canvas.Pixels[X1+mo,Y1+n-i];
pixycol := (pixcol+pixcol2) div 2
  for j := 0 to 20 do begin    //[150]
    if j >= i+1 then break;              //[151]
   Form1.Canvas.Pixels[X1+mo-i+j,Y1+n-j] := RGB(0,pixycol,0);
   end;
end;

Ошибки:
[Error] Tomo.pas(150): Missing operator or semicolon
[Error] Tomo.pas(151): Operator not applicable to this operand type
[Error] Tomo.pas(157): '.' expected but ';' found
[Fatal Error] MyTomo.dpr(5): Could not compile used unit 'Tomo.pas'

[157] - это end; функции.

Почему не организуется вложенный цикл?
Missing operator or semicolon - всех опереаторов вроде хватает!
for j := 0 to 20 do без begin тоже не работает!
257
04 марта 2007 года
kosfiz
1.6K / / 18.09.2005
 
Код:
for i := 0 to 20 do begin
pixcol := Form1.Canvas.Pixels[X1+mo-i,Y1+n];
pixcol2 := Form1.Canvas.Pixels[X1+mo,Y1+n-i];
pixycol := (pixcol+pixcol2) div 2; //поставь здесь ";"
  for j := 0 to 20 do begin    //[150]
    if j >= i+1 then break;              //[151]
   Form1.Canvas.Pixels[X1+mo-i+j,Y1+n-j] := RGB(0,pixycol,0);
   end;
end;


а по поводу ошибки [quote=][Error] Tomo.pas(157): '.' expected but ';' found[/quote] можно сказать что скорее всего у тебя где-то в коде поставлен лишний end.
367
04 марта 2007 года
Meatcoins
303 / / 18.01.2006
Совсем косой стал! Я над этой ошибкой около часа думал и не заметил точку с запятой! Спасибо! Просто раньше никогда не рисовал ничего, а сейчас понадобилось...
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог