2009-10-05 2 views
0

나는 이미 여기에서 물었지만 단 하나의 대답은 위치 결정과 관련이 있었다. 나는 앱 외부에서 항상 마우스를 따라 이미지를 생성하는 앱을 만들어야 할 것입니다. 마우스 위치를 연결하는 방법을 지금 알고 있지만 객체 (이미지)가 다른 앱 상단에 놓이는 방법을 알지 못합니다. 어쨌든 .NET에서 가능한지 모르겠다. 감사합니다.C# 응용 프로그램 외부의 그래픽 개체 - 그것은 가능합니까?

답변

0

Graphics.FromHdc(IntPtr.Zero) 시도해보십시오. 평범한 구식 GDI를 사용하면 모든 것을 바탕으로 데스크탑에 직접 그릴 수있었습니다. 비록 이것이 여전히 .NET에서 작동한다면 확실하지 않습니다.

덧붙여 : 즉, 나는 여전히 다른 대답에서 언급 된 trasparent-background-window 접근법을 사용하려고합니다. 데스크탑에 직접 드로잉하는 것은 너무 지저분하고 오류가 발생하기 쉽습니다.

3

그런 일을 수행하는 가장 쉽고 쉬운 방법 중 하나는 경계선이없고 작업 표시 줄에 표시되지 않는 최상위 창을 갖는 것입니다. 그러면 기본적으로 원하는대로 그림을 그릴 수 있습니다.

using System.Windows.Forms; 

Form overlay = new Form(); 
overlay.FormBorderStyle = FormBorderStyle.None; 
overlay.ShowInTaskbar = false; 
overlay.TopMost = true; 

보너스 포인트의 경우 도구 모음 속성을 적용하고 활성화 할 수 있습니다. 창문처럼 행동하지는 않지만 f.e와 같은 형태를 낳을 것입니다. 툴팁. 이를 위해이 같은 양식을 서브 클래스해야합니다

public class PassiveForm : Form 
{ 
    public PassiveForm() 
    { 
     InitializeComponent(); 
    } 

    protected override CreateParams CreateParams 
    { 
     get 
     { 
      CreateParams parameter = base.CreateParams; 
      parameter.ExStyle |= 0x80; // Apply toolbar-property 
      parameter.ExStyle |= 0x8000000; // Revoke acitvation 
      return parameter; 
     } 
    } 

    protected override bool ShowWithoutActivation 
    { 
     get 
     { 
      return true; 
     } 
    } 
} 

마우스 주위에 조금 어렵습니다 다음,하지만 마우스의 위치를 ​​풀링하는 것은 충분히 잘 작동합니다.

+3

링크를 탭 막대로 드래그 할 때 Google 크롬이 작은 화살표를 그리는 방식으로 테두리가없고 항상 화살표가 아닌 투명한 배경이있는 항상 맨 위에있는 창이 있습니다. – Blindy

+0

@Bobby :이 수동 양식 클릭이 가능합니까? – jnovacho

+0

@ jnovacho : 아니, 내가 아는 한 멀쩡해. 클릭 할 수는 있지만 클릭에 의해 어떤 식 으로든 활성화되지는 않습니다. – Bobby

관련 문제