求教,一个关于鼠标拖动的问题

这是wxWidgets论坛的中文版本。在这里,您可以用您的母语汉语讨论上面任一子论坛所涉及的所有关于wxWidgets的话题。欢迎大家参与到对有价值的帖子的中英互译工作中来!
Post Reply
happybamboo
Knows some wx things
Knows some wx things
Posts: 27
Joined: Tue Sep 16, 2008 4:19 am

求教,一个关于鼠标拖动的问题

Post by happybamboo » Thu Apr 16, 2009 8:11 am

if(event.LeftIsDown()&&event.Dragging())
{
wxClientDC dc(this);
DoPrepareDC(dc);
dc.SetBrush(*wxTRANSPARENT_BRUSH);
dc.SetPen(*wxBLACK_PEN);
wxPoint p=event.GetPosition();
dc.DrawRectangle(p.x,p.y,10,10);

if(!HasCapture())
CaptureMouse();
}
我的本意是让鼠标左键按下时候拖动,然后以鼠标箭头为中心的一个矩形随着鼠标移动,但现在是鼠标拖动时原有的矩形不消失导致拖出很多矩形,我想请教下大家有啥办法可以实现我的本意,最好有多种方法。
谢谢。

Utensil
Moderator
Moderator
Posts: 423
Joined: Sun Feb 03, 2008 11:38 am
Location: China

Post by Utensil » Tue Apr 21, 2009 9:12 am

你需要让原先的矩形消失再画新的。

如果背景是单色的,那你就用背景色把矩形再画一次就可以盖掉原先的矩形。

如果背景比较复杂,你也可以用wxWindow::Update()来使窗口重画自己。

如果对矩形的颜色没有要求,可以用wxDC::SetLogicalFunction将逻辑设为wxXOR然后把矩形画两次。

-Utensil
In fascination of creating worlds by words, and in pursuit of words behind the world.

On Github: http://utensil.github.com
Technical Blog in Chinese: http://utensil.iteye.com/

Post Reply