2010-04-13 11 views
5

मैं एप्लिकेशन स्टार्टअप पर विंडो के निर्देशांक को पुनर्स्थापित करता हूं। पुराने-पुराने-विंडोज-फॉर्म में मैंने System.Windows.Forms.Screen संग्रह का उपयोग किया था। क्या डब्ल्यूपीएफ दुनिया में कुछ भी समान है?डब्ल्यूपीएफ विंडो सुनिश्चित करना स्क्रीन सीमाओं के अंदर है

मैंने PrimaryScreen*, VirtualScreen* पैरामीटर System.Windows.SystemParameters में नोटिस किया था। हालांकि उन्होंने मुझे फांसी छोड़ दी क्योंकि यह पता लगाना असंभव प्रतीत होता है कि मॉनीटर एक ही आकार के मामले में खिड़की के अंदर है या नहीं।

उत्तर

4

System.Windows.Forms.Screen WPF के भीतर पूरी तरह से अच्छी तरह से काम करता है, इसलिए मुझे लगता है कि डब्ल्यूपीएफ के डिजाइनरों को इसे WPF- विशिष्ट संस्करण के साथ बदलने में कोई फायदा नहीं हुआ।

आपको पाठ्यक्रम का एक समन्वय परिवर्तन करना होगा।

public class ScreenBoundsConverter 
{ 
    private Matrix _transform; 

    public ScreenBoundsConverter(Visual visual) 
    { 
    _transform = 
     PresentationSource.FromVisual(visual).CompositionTarget.TransformFromDevice; 
    } 

    public Rect ConvertBounds(Rectangle bounds) 
    { 
    var result = new Rect(bounds.X, bounds.Y, bounds.Width, bounds.Height); 
    result.Transform(_transform); 
    return result; 
    } 
} 

उदाहरण उपयोग:

var converter = new ScreenBoundsConverter { Visual = this }; 

foreach(var screen in System.Windows.Forms.Screen.AllScreens) 
{ 
    Rect bounds = converter.ConvertBounds(screen.Bounds); 
    ... 
} 
यहाँ एक आसान वर्ग रूपांतरण करना है
संबंधित मुद्दे