2011-07-24 43 views
1


我正在开发一个screeshot应用程序。我想抓住真正的光标在位图上绘制它。
我有两个实现:在前者光标显示正常,但它总是默认光标;而在后者中,光标有时会被很好地绘制,有时它不会被更新和绘制。
有什么办法可以合并这些实现的积极方面吗?绘制真实光标的问题

第一:

Point cursorPosition = Cursor.Position; 
if (_bitmapRectangle.Contains(cursorPosition)) 
{ 
    Point relativeCursorPosition = new Point(cursorPosition.X - _bitmapRectangle.Location.X, cursorPosition.Y - _bitmapRectangle.Location.Y); 
    Cursor.Draw(graphics, new Rectangle(relativeCursorPosition, Cursor.Size)); 
} 

二:

Point cursorPosition = Cursor.Position; 
using (Cursor cursor = Cursor.Current) 
{ 
    if (_bitmapRectangle.Contains(cursorPosition)) 
    { 
     Point relativeCursorPosition = new Point(cursorPosition.X - _bitmapRectangle.Location.X, cursorPosition.Y - _bitmapRectangle.Location.Y); 
     cursor.Draw(graphics, new Rectangle(relativeCursorPosition, cursor.Size)); 
    } 
} 

看来,第二个解决方案时,我不使用默认的游标和工作不好当鼠标背景形式(和截图形式在前台)。

回答

0

尝试

Point cursorPosition = Cursor.Position; 
if (_bitmapRectangle.Contains(cursorPosition)) 
{ 
    Point relativeCursorPosition = new Point(cursorPosition.X - _bitmapRectangle.Location.X, cursorPosition.Y - _bitmapRectangle.Location.Y); 
    new Cursor (Cursor.Current.Handle).Draw(graphics, new Rectangle(relativeCursorPosition, Cursor.Size)); 
} 
+0

不,它捕获的时候,我指着一个不注重窗口 – Hamal000

+0

上的东西,而我测试的代码错误的光标,它抛出一个NullReferenceException – Hamal000

+0

我看到...当没有关注它很可能是Cursor.Current.Handle无效......目前没有新的想法,对不起:-( – Yahia