Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2004.04.18;
Скачать: [xml.tar.bz2];

Вниз

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

 
Феликс ©   (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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.45 MB
Время: 0.034 c
4-1076658166
Chery
2004-02-13 10:42
2004.04.18
Как переименовать папку?


1-1080953470
olhovik
2004-04-03 04:51
2004.04.18
Математические функции


1-1080889492
still_swamp
2004-04-02 11:04
2004.04.18
D8 и ADO


3-1079696178
int21h
2004-03-19 14:36
2004.04.18
Права в Paradox


1-1080392550
Yuri Btr
2004-03-27 16:02
2004.04.18
Отрисовка background в строке List View





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский