Задача такова: Написать программу построения чертежей планиметрии "протягиванием" от выбранной точки с изображением ее промежуточного положения с возможностью обозначения точек и проведения стандартных линий в треугольнике. Как это сделать я впринципе знаю но есть 1 проблема это работа с указателем мыши.Для начала я попытался сделать так чтобы при нажатии на изображение рисовалась линия из текущего положения курсора в положение указателя мыши
procedure TForm1.Image1Click(Sender: TObject); var Mo: TMouse; MX, MY: integer; begin MX := Mo.CursorPos.X; MY := Mo.CursorPos.Y; image1.canvas.LineTo(mx,my); end;
получается чето не то линия проводится явно не к указателю мыши.Может это связано с масштабом Image1 (833x533)?подскажите.И еще какие свойства в Tmouse отвечают за нажатые кнопки мыши?
procedure DrawLine4Connected(x1,y1,x2,y2 : Integer;col:tcolor); var x, y, dx, dy, sx, sy, z, e, i : Integer; Ch,cl : Boolean; begin x := x1; y := y1; dx := Abs(x2-x1); dy := Abs(y2-y1); If x2-x1>0 then sx:=1 else sx:=-1; If y2-y1>0 then sy:=1 else sy:=-1; e := 2*dy-dx; Ch:=dy>=dx; if Ch then begin z := dx; dx := dy; dy := z; end; i := 1; repeat if image1.Canvas.Pixels[x, y]=clblack then cl:=true else cl:=false; if cl=false then image1.Canvas.Pixels[x, y]:=col; if e<dx then begin if Ch then y := y+sy else x := x+sx; e := e+2*dy; end else begin if Ch then x := x+sx else y := y+sy; e := e-2*dx; end; i := i+1; until i>dx+dy; { if image1.Canvas.Pixels[x, y]=clblack then cl:=true else cl:=false; if cl=false then } image1.Canvas.Pixels[x, y]:=col;
end;
Я пытаюсь добится чтоб линия белого цвета не затирала линию черного цвета.Ну с алгоритмом все ясно если цвет пикселя фона отличен от цвета фона то не рисуем пиксель иначе рисуем.Таквот вся проблема в том как узнать какого цвета пиксель на фоне я попробовал так
if image1.Canvas.Pixels[x, y]=clblack then{вот тут я пытаюсь узнать цвет пикселя фона (видимо не верно)} cl:=true else cl:=false; if cl=false then{тут если пиксель на фоне не черный рисуем точку} image1.Canvas.Pixels[x, y]:=col;
Видимо if image1.Canvas.Pixels[x, y]=clblack тут проверяется не цвет пикселя фона а цвет того который я нарисовал до этого?Как правильно узнать цвет пикселя на фоне?