2017-12-21 4 views
2

그래서 SVG 이미지를 사용하여 사용자 정의 모양의 윈도우를 그리는 간단한 테스트를 만들었습니다. Inspiration found herethis.Region Path 데이터가 작은 창으로 연결됩니다.

아무리 잘하면 내 창 크기가 너무 작아서 아무 컨트롤을 붙이지 않아도됩니다.

이유 : 멋진 데요? Windows는 더 나은 테마 지정 지원이 필요합니다. 나 지루 했어!

내가

코드 비주얼 스튜디오 내에서 nuget.com에서 SVG를 사용하고

:

using Svg; 

    public const int WM_NCLBUTTONDOWN = 0xA1; public const int HT_CAPTION = 0x2; 

    internal class NativeMethods 
    { 
     // Allows forms with Toolbox property set to false to be moved 
     [System.Runtime.InteropServices.DllImportAttribute("user32.dll", CharSet = CharSet.Unicode)] 
     internal static extern IntPtr SendMessage(IntPtr hWnd, int Msg, IntPtr wParam, IntPtr lParam); 
     [System.Runtime.InteropServices.DllImportAttribute("user32.dll", CharSet = CharSet.Unicode)] 
     internal static extern bool ReleaseCapture(); 
    } 
    public Form1() 
    { 
     InitializeComponent(); 
    } 
    protected override void OnPaint(PaintEventArgs e) 
    { 
     System.Drawing.Drawing2D.GraphicsPath frmshp = new System.Drawing.Drawing2D.GraphicsPath(); 
     //frmshp.AddEllipse(0, 0, this.Width, this.Height); 

     //SvgDocument.Open(@"TestWindowsshape.svg"); 
     SvgDocument newshp = SvgDocument.Open(@"TestWindowsshape.svg"); 
     frmshp = (newshp.Path); 

     this.Region = new Region(frmshp); 
    } 
    private void Form1_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e) 
    { 
     // Make settings window movable without a titlebar 
     if (e.Button == MouseButtons.Left) 
     { 
      NativeMethods.ReleaseCapture(); 
      NativeMethods.SendMessage(Handle, WM_NCLBUTTONDOWN (IntPtr)HT_CAPTION, (IntPtr)0); 
     } 
    } 

나는 SVG의 크기를 증가하는 것을 시도했다, 일부 코드와 함께 연주,하지만 아무것도 난 할 것 않는다 그려진 창은 더 커진다. BMP & 투명도 메서드는 비트 맵 자체에서 하나의 색을 사용할 수 없다는 단점이 있기 때문에 BMP 및 TransparancyKey 옵션을 사용하여이 작업을 수행 할 수 있음을 알고 있습니다. 어떤 조언을 주시면 감사하겠습니다

편집 :

Matrix m = new Matrix(); 
    m.Scale(100, 100, MatrixOrder.Append); 
    m.Translate(100, 100, MatrixOrder.Append); 
    newshp.Path.Transform(m); 

가 영향을 미치지 않고, 시도되고있다. 나는 이것이 SVG 내에 문제가 있다는 것을 의미한다고 생각할 것입니다.

답변

1

SVG 파일에 문제가있는 것처럼 보입니다. 메모장에서 사각형의 크기를 조정하고 더 큰 창을 얻었지만 더 복잡한 모양이 번거롭기는합니다. Inkscape는 신뢰할 수있는 크기의 SVG를 만들 수 없습니다 ... "문서 속성"이 내 화면 해상도로 설정되었지만 벡터가 너무 작게 나타납니다. 어쩌면 일러스트 레이터가 제대로이 작업을 수행 할 수 있습니다.

관련 문제