Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: WinAPI и системное программирование > как реализовать? CreatePen + pmXor


Автор: niteo 16.7.2009, 15:45
Всем привет. Подскажите, как сделать перо на WinAPI с параметром pmXor. Необходимо осуществить перемещение прямоугольника по форме. Есть вот такой код:
Код

procedure DrawRect;
begin
  with Form1.Canvas do 
  begin
    Pen.Style := psDot;
    Pen.Color := clGray;
    Pen.Mode := pmXor;
    Brush.Style := bsClear;
    Rectangle(sel.Left, sel.Top, sel.Right, sel.Bottom);
  end;
end; 


Автор: Rrader 16.7.2009, 17:13
Код

procedure DrawRect;
var
  OldPen, NewPen: HPEN;
  OldBrush: HBRUSH;
begin
  with Form1.Canvas do
  begin
    SetROP2(Handle, R2_XORPEN);
    NewPen := CreatePen(PS_DOT, 1, ColorToRGB(clGray));
    try
      OldPen := Pen.Handle;
      Pen.Handle := NewPen;
      try
        OldBrush := Brush.Handle;
        //Brush.Handle := GetStockObject(NULL_BRUSH);
        try
          Windows.Rectangle(Handle, 10, 10, 200, 200);
        finally
          Brush.Handle := OldBrush;
        end;
      finally
        Pen.Handle := OldPen;
      end;
    finally
      DeleteObject(NewPen);
    end;
  end;
end;

Автор: niteo 16.7.2009, 19:26
Работает!!! Спасиб. Нада Английский учить, ИМХО MSDN всем в помощь smile

Автор: niteo 19.7.2009, 19:23
Заменил строки 
      OldPen := Pen.Handle;
      Pen.Handle := NewPen;
на
      OldPen := SelectObject(Handle, NewPen); smile



Автор: Rrader 20.7.2009, 05:07
Когда мешаете VCL И WinAPI, лучше не злоупотреблять этим smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)