Рисование на TImage. Или как распечатать графику?..

Общие вопросы программирования, алгоритмы и т.п.

Модератор: Модераторы

Рисование на TImage. Или как распечатать графику?..

Сообщение MrDillan » 17.04.2013 16:00:01

Добрый день. Проблема такая - при попытки рисование на Image? все получается закрашенным.
Код
Image1.Canvas.Pen.Width:=1;
Image1.Canvas.Brush.Style:=bsClear;
Image1.Canvas.MoveTo(50,50);
Image1.Canvas.LineTo(200,200);

результат весь Image получается закрашенным черным.
Гугля, нашел как рисовать через буфер...

unit Unit1;

{$mode objfpc}{$H+}

interface

uses
Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,
ExtCtrls, Menus, ExtDlgs, StdCtrls, ColorBox, Buttons, ComCtrls;

.
.
.

var
Form1: TForm1;
img, buffer: TBitmap;
x0,y0: integer;
implementation

{$R *.lfm}

{ TForm1 }



procedure TForm1.FormCreate(Sender: TObject);
begin
Image1.Canvas.FillRect(image1.Canvas.cliprect);
Img:=TBitmap.Create;
buffer:=TBitmap.Create;
Img.Width:=Image1.ClientWidth;
buffer.Width:=Image1.ClientWidth;
Img.Height:=Image1.ClientHeight;
buffer.Height:=Image1.ClientHeight;
end;

procedure TForm1.MenuItem2Click(Sender: TObject);
begin


img.assign(buffer);
img.Canvas.Brush.Style:=bsClear;
// img.Canvas.Rectangle(10,10,100,100);
img.Canvas.LineTo(200,200);


image1.Canvas.CopyRect(bounds(0,0,img.Width,img.Height),
img.Canvas,bounds(0,0,img.Width,img.Height));
buffer.Assign(img);

end;

результат тотже! (
Вообще смысл вот какой - необходимо ЛИБО рисовать на самой форме канвасом и потом сохранить(*.jpg/*.png/*.bmp - не принципиально)/распечатать ЛИБО тоже самое с Image или Shape...
Хелп плиз!!!
MrDillan
незнакомец
 
Сообщения: 1
Зарегистрирован: 17.04.2013 15:47:57

Re: Рисование на TImage. Или как распечатать графику?..

Сообщение absdjfh » 18.04.2013 14:04:26

Мне обычно помогает вставка такого кода:
Image1.Canvas.Brush.Color := clWhite;
Image1.Canvas.FillRect(0, 0, Image1.Width, Image1.Height);
перед:
MrDillan писал(а):Image1.Canvas.Pen.Width:=1;
Image1.Canvas.Brush.Style:=bsClear;
Image1.Canvas.MoveTo(50,50);
Image1.Canvas.LineTo(200,200);

Все будет закрашено, соответственно, белым.
absdjfh
новенький
 
Сообщения: 60
Зарегистрирован: 21.01.2012 13:59:00


Вернуться в Общее

Кто сейчас на конференции

Сейчас этот форум просматривают: Yandex [Bot] и гости: 6

Рейтинг@Mail.ru