|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Отрисовса Canvas при borderStyle=bsNone однозначно глючит
DELETED MESSAGE
Последний раз редактировалось cmepthuk, 19.07.2016 в 19:04. |
#2
|
||||
|
||||
Что по-твоему должно происходить? Рисуй на TImage, чтобы не стиралось.
Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |
#3
|
|||
|
|||
DELETED MESSAGE
Последний раз редактировалось cmepthuk, 19.07.2016 в 19:04. |
#4
|
||||
|
||||
Нужно посмотреть, а пока у тебя 1 ошибка и неудачный выбор отрисовки.
Код:
DC := GetWindowDC(Handle); Код:
LineTo(0, mainForm.Height - padding); LineTo(mainForm.Width - padding, mainForm.Height - padding); LineTo(mainForm.Width - padding, 0); LineTo(0, 0); Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |
#5
|
|||
|
|||
DELETED MESSAGE
Последний раз редактировалось cmepthuk, 19.07.2016 в 19:04. |
#6
|
||||
|
||||
И всех делов:
Код:
procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin ReleaseCapture; SendMessage(Handle, WM_SYSCOMMAND, $F012, 0); end; procedure TForm1.FormPaint(Sender: TObject); begin with Canvas do begin Pen.Color := clRed; Pen.Style := psSolid; Pen.Width := 1; Brush.Style := bsClear; Rectangle(0, 0, ClientWidth - 1, ClientHeight - 1); end; end; Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |
#7
|
||||
|
||||
Цитата:
Код:
ReleaseDC(Handle, DC) Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |
#8
|
|||
|
|||
DELETED MESSAGE
Последний раз редактировалось cmepthuk, 19.07.2016 в 19:04. |
#9
|
||||
|
||||
Я прежде чем выкладывать проверяю - не пропадает.
Так бы и сказал, что нужно рисовать не на форме. Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |
#10
|
|||
|
|||
DELETED MESSAGE
Последний раз редактировалось cmepthuk, 19.07.2016 в 19:04. |
#11
|
||||
|
||||
Цитата:
2. В данном случае отрисовка должна идти не на OnPaint-е, а на WMNCPaint. Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |
#12
|
||||
|
||||
Вот тебе рамка на форме и на border-е.
Код:
unit Unit30; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs; type TForm1 = class(TForm) procedure FormMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); procedure FormPaint(Sender: TObject); procedure WMNCPaint(var Message: TMessage); message WM_NCPAINT; private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin ReleaseCapture; SendMessage(Handle, WM_SYSCOMMAND, $F012, 0); end; procedure TForm1.FormPaint(Sender: TObject); var aRect : TRect; begin SetRect(aRect, 0, 0, ClientWidth, ClientHeight); InflateRect(aRect, -5, -5); with Canvas do begin Pen.Color := clRed; Pen.Style := psSolid; Pen.Width := 1; Brush.Style := bsClear; Rectangle(aRect.Left, aRect.Top, aRect.Right - 1, aRect.Bottom - 1); end; end; procedure TForm1.WMNCPaint(var Message: TMessage); var DC : HDC; aRect : TRect; Pen, OldPen : HPEN; Brush : HBRUSH; begin inherited; DC := GetWindowDC(Handle); try SetRect(aRect, 0, 0, Width, Height); Pen := CreatePen(PS_SOLID, BorderWidth, clBlue); OldPen := SelectObject(DC, Pen); Brush := SelectObject(DC, GetStockObject(NULL_BRUSH)); Rectangle(DC, 0, 0, Form1.Width, Form1.Height); SelectObject(DC, Brush); DeleteObject(SelectObject(DC, OldPen)); finally ReleaseDC(Handle, DC); end; Message.Result := 1; end; end. Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |
Этот пользователь сказал Спасибо angvelem за это полезное сообщение: | ||
cmepthuk (08.10.2012)
|
#13
|
|||
|
|||
DELETED MESSAGE
Последний раз редактировалось cmepthuk, 19.07.2016 в 19:04. |
#14
|
||||
|
||||
У меня ничего не мерцает. Дельфи 7, WinXP.
Цитата:
Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |
#15
|
|||
|
|||
DELETED MESSAGE
Последний раз редактировалось cmepthuk, 19.07.2016 в 19:04. |