2014-11-27 3 views
0

Я пытаюсь создать программу в winForm на C#, где изображение будет следовать за мышью вне приложения.C# создать изображение, которое следует за мышью

У меня нет понятия, как рисовать изображение за пределами формы, не говоря уже о том, чтобы оно следовало за мышью. Мое решение должно было быть - создать форму без полей и сделать это после мыши - но это решение не будет работать, потому что я не могу переместить форму через код.

Мышь должна быть в состоянии щелкнуть и функционировать независимо от этого изображения.

Как бы я это сделал?

+0

Не можете ли вы использовать пользовательский курсор мыши вместо того, чтобы писать приложение? – bansi

+0

проверить эту тему: http://stackoverflow.com/questions/6162433/how-to-drag-and-move-winform-using-mouse Кажется, вы хотите сделать что-то вроде этого. Надеюсь, это поможет! – Rohit

+0

Нет, я не могу, потому что это будет использоваться с вводом сенсорного моделирования, чтобы пользователь знал, где они касаются. – user2536897

ответ

2

он должен сделать это, не меняя способ использования мыши.

Установить WS_EX_TRANSPARENT для расширенных стилей, чтобы ваша форма игнорировалась щелчками мыши. Установите TopMost на True и Opacity на что-то менее 100%, чтобы сделать его полупрозрачным. Переместите форму с помощью таймера. Что-то вроде:

public partial class Form1 : Form 
{ 

    public Form1() 
    { 
     InitializeComponent(); 
     this.Opacity = .5; 
     this.TopMost = true; 
     this.BackColor = Color.Yellow; 
     this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None; 

     // Makes the form circular: 
     System.Drawing.Drawing2D.GraphicsPath GP = new System.Drawing.Drawing2D.GraphicsPath(); 
     GP.AddEllipse(this.ClientRectangle); 
     this.Region = new Region(GP); 
    } 

    const int WS_EX_TRANSPARENT = 0x20; 

    protected override System.Windows.Forms.CreateParams CreateParams 
    { 
     get 
     { 
      CreateParams cp = base.CreateParams; 
      cp.ExStyle = cp.ExStyle | WS_EX_TRANSPARENT; 
      return cp; 
     } 
    } 

    private void timer1_Tick(object sender, EventArgs e) 
    { 
     Point pt = Cursor.Position; 
     pt.Offset(-1 * this.Width/2, -1 * this.Height/2); 
     this.Location = pt; 
    } 

} 
+0

Спасибо, я обязательно попробую! – user2536897

+0

Это решает мою проблему! Большое спасибо! – user2536897

1

проверить эту тему:

How to drag and move winform using mouse

кажется, что вы хотите сделать что-то вроде этого.

Надеюсь, это поможет!

+0

Нет, это не то, что я хочу сделать. Я тоже не оцениваю голосование. Я специально сказал, что движение изображения не может повлиять на использование мыши, и оно должно двигаться естественным образом. Например, если я хочу создать программу с изображением лупы, следуйте мыши, она должна сделать это, не изменяя способ использования мыши. Спасибо за ваш вклад, но это очень ценится. – user2536897

+0

Сделано !! Спасибо, что исправили меня :) – Rohit

+0

Вы просто хотите изменить изображение курсора правильно? – Rohit

Смежные вопросы