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.
Пытаемся рисовать...
Код:
Не могу понять почему при запуске проги в форме нет ничего кроме кнопки!
Когда не было комментариев, всё равно в форме ничего не рисовалось!
Что делать?
Код:
procedure TForm1.FormResize(Sender: TObject);
begin
Canvas.FillRect(Canvas.ClipRect);
end;
begin
Canvas.FillRect(Canvas.ClipRect);
end;
Оказывается надо было не в 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;
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;
Всё работает!
Код:
// Эта функция что-то рисует просто!
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;
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 нужна для перерисовки, например, из-за того, что пользователь изменил координаты Эллипса! Но старый эллипс при этом остаётся!!!
Как убрать старый эллипс с экрана!?
Закрась его таким же эллипсом но с цветом формы.
Код:
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;
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 тоже не работает!
Код:
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;
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.
Совсем косой стал! Я над этой ошибкой около часа думал и не заметил точку с запятой! Спасибо! Просто раньше никогда не рисовал ничего, а сейчас понадобилось...