Главная страница
    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.031 c
1-1080542953
Zilog
2004-03-29 10:49
2004.04.18
Как создать приложение класса TAppBuilder?


4-1076347553
TankMan
2004-02-09 20:25
2004.04.18
Как передать сообщение по сети?


7-1076770080
MadGhost
2004-02-14 17:48
2004.04.18
Monitoring Communications Events


11-1061717456
Мякс
2003-08-24 13:30
2004.04.18
Проблемы с процедурами Enter и Leave


3-1079453966
DataBase
2004-03-16 19:19
2004.04.18
Как получить общее количество записей в таблице





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский