Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.04.18;
Скачать: CL | DM;

Вниз

Простой вопрос по переделке кода указанного в хелпе.   Найти похожие ветки 

 
Феликс ©   (2004-04-02 22:35) [0]

Здравствуйте, Мастера! В хелпе в описание lineto указывается пример:

procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
begin
 { first call FillRect to paint the surface of the form.
 this removes any previously drawn lines (and anything else!) }
 Canvas.FillRect(ClientRect);
 Canvas.MoveTo(0, 0);
 Canvas.LineTo(X, Y);
end;

При использование данного примера закрашивается полностью форма в белый цвет и уже на ней чертиться линия. Вопрос в том как чертить линию не на белом фоне (который возникает при выполнении Canvas.FillRect(ClientRect);), а на фоне картинки (timage)?

Заранее благодарен.


 
Девушка   (2004-04-02 22:40) [1]

Попробуй убрать Canvas.FillRect(ClientRect);


 
Феликс ©   (2004-04-02 22:43) [2]

Нет, это не поможет.


 
Девушка   (2004-04-02 22:47) [3]

Подожди, дык ты старую линию не стираешь?


 
Mihey ©   (2004-04-02 22:53) [4]

На форме pbScreen от TPaintBox. Изображение загружается в память без TImage. Юзаю TPaintBox т.к. есть OnPaint. Мерцание убрано через DoubleBuffered.

unit mainUnit;

interface

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

type
 TmainForm = class(TForm)
   pbScreen: TPaintBox;
   procedure FormCreate(Sender: TObject);
   procedure FormDestroy(Sender: TObject);
   procedure pbScreenPaint(Sender: TObject);
   procedure pbScreenMouseMove(Sender: TObject; Shift: TShiftState; X,
     Y: Integer);
 private
 public
   { Public declarations }
 end;

var
 mainForm: TmainForm;
 fon: TBitmap;
 x0, y0: Integer;

implementation

{$R *.DFM}

procedure TmainForm.FormCreate(Sender: TObject);
begin
 fon := TBitmap.Create;
 fon.LoadFromFile("fon.bmp");
 DoubleBuffered := True;
end;

procedure TmainForm.FormDestroy(Sender: TObject);
begin
 fon.Free;
end;

procedure TmainForm.pbScreenPaint(Sender: TObject);
begin
 BitBlt(pbScreen.Canvas.Handle, 0, 0, fon.Width, fon.Height,
  fon.Canvas.Handle, 0, 0, SrcCopy);
 pbScreen.Canvas.MoveTo(0, 0);
 pbScreen.Canvas.LineTo(x0, y0);
end;

procedure TmainForm.pbScreenMouseMove(Sender: TObject; Shift: TShiftState;
 X, Y: Integer);
begin
 x0 := X;
 y0 := Y;
//  pbScreen.Invalidate;
 pbScreen.Repaint;
end;

end.


 
Феликс ©   (2004-04-02 23:16) [5]


> Подожди, дык ты старую линию не стираешь?

Да вот же как раз и нет, но сейчас уже разобрался.

2 Mihey
Отличный способ. Спасибо! Разобрался.



Страницы: 1 вся ветка

Текущий архив: 2004.04.18;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.026 c
14-1080272522
MeF88
2004-03-26 06:42
2004.04.18
Непонятный глюк с компом...


7-1076501691
Michail Dalakov
2004-02-11 15:14
2004.04.18
User32.dll и DCOM


4-1076495701
}{enon
2004-02-11 13:35
2004.04.18
Как узнать стиль кнопки в другом приложении?


14-1079954479
Соловьев
2004-03-22 14:21
2004.04.18
Есть ли программеры из Киева?


3-1079931573
Максим
2004-03-22 07:59
2004.04.18
Как упаковать dbf таблици используя для доступа к данным ADO?