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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 25.03.2010, 12:06   #1
Dalagardi
Пользователь
 
Регистрация: 16.01.2010
Сообщений: 38
Вопрос Проблема с рисованием на canvas`e Timage (Delphi)

Начал в своей программе делать жалкое подобие Paint`a.Проблема такая, как только начинаю рисовать на рисунке(извиняюсь за тавтологию),картинка тут же исчезает. Рисую на
Код:
image1.picture.bitmap.canvas
Вот полный код
Код:
procedure TForm3.PenClick(Sender: TObject);
begin
glob:=1;
end;

procedure TForm3.Image1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
case glob of
{1}  1:Begin
    if button=mbLeft then
                      Begin
                      FStart:=point(x,y);
                      FEnd:=FStart;
                      FMD:=true;
                      End;
      end;
{2}
end;

end;
procedure TForm3.Image1MouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
case glob of
1:FMD:=false;
end;
end;

procedure TForm3.Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
case glob of
1: if FMD=true then
                Begin
                image1.picture.Bitmap.Canvas.Pen.Mode:=pmNotXor;
                image1.picture.Bitmap.Canvas.MoveTo(Fstart.X,Fstart.Y);
                image1.picture.Bitmap.Canvas.LineTo(Fend.X,Fend.Y);
                image1.picture.Bitmap.Canvas.MoveTo(Fstart.X,fstart.Y);
                image1.picture.Bitmap.Canvas.LineTo(x,y);
                Fend:=point(x,y);
                end;
end;
Dalagardi вне форума Ответить с цитированием
Старый 25.03.2010, 12:43   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

А почему бы не рисовать в PaintBox? Он то специально предназначен для этого.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 25.03.2010, 12:45   #3
Lauraldo
Пользователь
 
Аватар для Lauraldo
 
Регистрация: 22.03.2010
Сообщений: 53
По умолчанию

Этот код верный, ничего исчезать не должно.
По крайней мере, если в Picture.Bitmap загружена картинка.
А вот если картинка загружена НЕ В ФОРМАТЕ BMP - тогда исчезать будет. Это ж разные канвасы совсем.

Stilet, наверно потому что лень OnPaint юзать.

Последний раз редактировалось Lauraldo; 25.03.2010 в 12:47.
Lauraldo вне форума Ответить с цитированием
Старый 25.03.2010, 13:26   #4
Dalagardi
Пользователь
 
Регистрация: 16.01.2010
Сообщений: 38
По умолчанию

Цитата:
Сообщение от Lauraldo Посмотреть сообщение
А вот если картинка загружена НЕ В ФОРМАТЕ BMP - тогда исчезать будет. Это ж разные канвасы совсем.

Stilet, наверно потому что лень OnPaint юзать.
Не в лени дело, мне именно через Timage надо, а если в Timage jpg файл тогда как поступить?
Dalagardi вне форума Ответить с цитированием
Старый 25.03.2010, 13:33   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Есть одна проблемка у этого компонента.
Дело в том что по каким то причинам он запрещает рисовать на себе если в нем загружена картинка. Я так и не разобрался что за дурость, в свое время плюнул, и начал грузить картинки и рисовать в PaintBox.
Цитата:
мне именно через Timage надо
А почему? Какие веские причины использовать этот особокорявый компонент?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 25.03.2010, 14:59   #6
Dalagardi
Пользователь
 
Регистрация: 16.01.2010
Сообщений: 38
По умолчанию

Да там больше по смыслу подходит. Ну в общем хрен с ним, буду через PaintBox =) а в нём есть разница какие заливать картинки?

Вопрос глупый, но всё же.. Как в ПэйнтБокс заливать готовую картинку?

Последний раз редактировалось Stilet; 25.03.2010 в 15:40.
Dalagardi вне форума Ответить с цитированием
Старый 25.03.2010, 15:42   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Ниче глупого в вопросе не вижу
А работать с ним просто и удобно:
Код:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    PaintBox1: TPaintBox;
    procedure FormCreate(Sender: TObject);
    procedure PaintBox1Paint(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
  private
    { Private declarations }
  public B:TPicture;
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
  B:=TPicture.Create;
  B.LoadFromFile('C:\Documents and Settings\5097\Рабочий стол\demotivators\23700_ges.thumbnail.jpg');
end;

procedure TForm1.PaintBox1Paint(Sender: TObject);
begin
 with TPaintBox(sender) do begin
  Canvas.Draw(0, 0 ,B.Graphic);
 end;
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
 b.Free;
end;

end.
Смысл ясен?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 25.03.2010, 15:48   #8
Lauraldo
Пользователь
 
Аватар для Lauraldo
 
Регистрация: 22.03.2010
Сообщений: 53
По умолчанию

Stilet, у меня получилось рисовать на TImage. Так, как в данном примере.
То есть, если я рисую на той же канве, где загруженный рисунок.

Dalagardi, на TJPEGImage вообще не порисуешь, у него нет канвы.
Lauraldo вне форума Ответить с цитированием
Старый 25.03.2010, 16:10   #9
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Lauraldo
Я не против. У меня то получалось то нет. В любом случае отдал предпочтение вышеприложенному мной примеру, который пока еще не подводил.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 25.03.2010, 20:55   #10
Dalagardi
Пользователь
 
Регистрация: 16.01.2010
Сообщений: 38
По умолчанию

Stilet, огромное спасибо, в который раз уже выручаешь =)
Dalagardi вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема с рисованием на канве в TPaintBox pro100-delphi Помощь студентам 10 09.03.2010 19:41
проблема с рисованием сферы kady Помощь студентам 14 25.01.2010 17:48
Timage - проблема... Canvas Общие вопросы Delphi 11 19.11.2008 16:35
Проблема с рисованием прямоугольника Юра. Общие вопросы Delphi 13 04.08.2007 06:08
Помогите с рисованием на Delphi, компонент paintbox Jose Общие вопросы Delphi 10 01.02.2007 14:18