![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Пытаюсь рисовать на канве RichEdit. Не получается. [D7, XP]
Alex_C © (2006-09-27 11:02:00)Делаю так:
DC := GetDC( RichEdit1.Handle );
aCanvas:=TCanvas.Create;
aCanvas.Handle:= DC;
далее работаю с aCanvas - ни ничего не происходит.
Gydvin (2006-09-27 12:08:00) [1]пробуй так
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ComCtrls, ExtCtrls;
type
TForm1 = class(TForm)
RichEdit1: TRichEdit;
Timer1: TTimer;
procedure WMNCPaint(richedit:trichedit;a:integer);
procedure Timer1Timer(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure tform1.WMNCPaint(richedit:trichedit;a:integer);
var
dc: hDc;
Pen: hPen;
OldPen: hPen;
OldBrush: hBrush;
x,x1,y,y1:integer;
begin
dc := GetDC(richedit.handle);
Pen := CreatePen(PS_SOLID, 1, clred);
OldPen := SelectObject(dc, Pen);
OldBrush := SelectObject(dc, GetStockObject(NULL_BRUSH));
x:=richedit.ClientWidth;
y:=richedit.Clientheight;
x1:= x div 2;
y1:= y div 2;
windows.MoveToEx(dc, 0, 0, nil);
windows.LineTo(dc, x, y);
windows.Ellipse(dc,x1 -a,y1 -a,x1+a,y1+a) ;
SelectObject(dc, OldBrush);
SelectObject(dc, OldPen);
DeleteObject(Pen);
ReleaseDC(dc, dc);
end;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
richedit1.Repaint;
WMNCPaint(richedit1,50);
end;
end.
Вообще-то нужно создать потомка перекрыв стандартный репайнт и сделав его самому
clickmaker (2006-09-27 11:07:00) [2]до первой перерисовки эдита удастся что-то нарисовать.
А потом эдит, не зная просто о твоих художествах, все затрет в своем обработчике WM_PAINT
Игорь Шевченко (2006-09-27 11:05:00) [3]
> далее работаю с aCanvas - ни ничего не происходит.
а должно ?