ডাব্লুপিএফ-তে কীভাবে বর্তমান পর্দার আকার পাবেন?


89

আমি জানি আমি ব্যবহার করে প্রাথমিক স্ক্রিনের আকার পেতে পারি

System.Windows.SystemParameters.PrimaryScreenWidth;
System.Windows.SystemParameters.PrimaryScreenHeight;

তবে আমি কীভাবে বর্তমান পর্দার আকার পেতে পারি? (মাল্টি-স্ক্রিন ব্যবহারকারীরা সর্বদা প্রাথমিক পর্দা ব্যবহার করেন না এবং সমস্ত পর্দা একই রেজোলিউশন ব্যবহার করছে না, তাই না?)

এক্সএএমএল থেকে আকারটি অ্যাক্সেস করতে পেরে ভাল লাগবে তবে কোড (সি #) থেকে এটি করা যথেষ্ট হবে।


4
"বর্তমান" সংজ্ঞায়িত করুন। উইন্ডো এক সাথে একাধিক স্ক্রিনে থাকতে পারে।
জিম বাল্টার

উত্তর:


14

আমি যতদূর জানি বর্তমান মনিটরের মাত্রা পেতে কোনও দেশীয় ডাব্লুপিএফ ফাংশন নেই। পরিবর্তে আপনি নেটিভ একাধিক ডিসপ্লে মনিটরের ফাংশনগুলি পিনভোক করতে পারেন , এগুলি ম্যানেজড ক্লাসে মুড়িয়ে রাখতে পারেন এবং এক্সএএমএল থেকে তাদের গ্রাস করার জন্য আপনার প্রয়োজনীয় সমস্ত সম্পত্তি উন্মোচন করতে পারেন।


আমি যা ভীত করেছিলাম ঠিক সেটাই হ'ল - স্টাফের পি / ইনভোক করার প্রয়োজন বা সিস্টেমে অ্যাক্সেস করা। উইন্ডোজ। ফর্মস। স্ক্রিনটি কোনওরকম। এবং এটি করার সময় আমার সর্বদা "ডিভাইস ইন্ডিপেন্ডেন্ট পিক্সেল" ক্যালকুলেট করা দরকার ... ধন্যবাদ, যদিও।
নিলস

হ্যাঁ ... সম্ভবত সিস্টেমপ্যারামিটারগুলি on কনভার্টপিক্সেল () ফাংশন আপনাকে সহায়তা করবে। এটি অভ্যন্তরীণ, তবে প্রতিচ্ছবি যত্নশীল নয়:) ...
আনভাকা

75

আমি সিস্টেম থেকে উইন্ডোজ.ফর্মগুলি থেকে স্ক্রিনের চারপাশে কিছুটা র‍্যাপার তৈরি করেছি, বর্তমানে সবকিছু কাজ করে ... যদিও "ডিভাইস ইন্ডিপেন্ডেন্ট পিক্সেল" সম্পর্কে নিশ্চিত নই।

public class WpfScreen
{
    public static IEnumerable<WpfScreen> AllScreens()
    {
        foreach (Screen screen in System.Windows.Forms.Screen.AllScreens)
        {
            yield return new WpfScreen(screen);
        }
    }

    public static WpfScreen GetScreenFrom(Window window)
    {
        WindowInteropHelper windowInteropHelper = new WindowInteropHelper(window);
        Screen screen = System.Windows.Forms.Screen.FromHandle(windowInteropHelper.Handle);
        WpfScreen wpfScreen = new WpfScreen(screen);
        return wpfScreen;
    }

    public static WpfScreen GetScreenFrom(Point point)
    {
        int x = (int) Math.Round(point.X);
        int y = (int) Math.Round(point.Y);

        // are x,y device-independent-pixels ??
        System.Drawing.Point drawingPoint = new System.Drawing.Point(x, y);
        Screen screen = System.Windows.Forms.Screen.FromPoint(drawingPoint);
        WpfScreen wpfScreen = new WpfScreen(screen);

        return wpfScreen;
    }

    public static WpfScreen Primary
    {
        get { return new WpfScreen(System.Windows.Forms.Screen.PrimaryScreen); }
    }

    private readonly Screen screen;

    internal WpfScreen(System.Windows.Forms.Screen screen)
    {
        this.screen = screen;
    }

    public Rect DeviceBounds
    {
        get { return this.GetRect(this.screen.Bounds); }
    }

    public Rect WorkingArea
    {
        get { return this.GetRect(this.screen.WorkingArea); }
    }

    private Rect GetRect(Rectangle value)
    {
        // should x, y, width, height be device-independent-pixels ??
        return new Rect
                   {
                       X = value.X,
                       Y = value.Y,
                       Width = value.Width,
                       Height = value.Height
                   };
    }

    public bool IsPrimary
    {
        get { return this.screen.Primary; }
    }

    public string DeviceName
    {
        get { return this.screen.DeviceName; }
    }
}

এই দুর্দান্ত ছোট মোড়কের জন্য ধন্যবাদ, নোট করুন যে বিশ্বব্যাপী :: যখন আমি ডাব্লুপিএফ 3.5 ব্যবহার করি তখন রেক্টটিকে কেবল সরল রেক্টে রূপান্তরিত করা দরকার।
অ্যান্ডি ডেন্ট

4
আমি এই পছন্দ। অবশ্যই এটি কিছুটা কাজের প্রয়োজন তবে আমি 100% সমাধান খুঁজে পাওয়ার আশা করি না।
জেফ 20'15

4
দুর্দান্ত কাজ করে। আমি কেবল ডিভাইসটি স্বাধীন পিক্সেলগুলিতে রেক্টটি ফেরত দেওয়ার জন্য গেটরেক্ট পদ্ধতিটি প্রসারিত করেছি: ব্যক্তিগত রেক্ট গেটরেক্ট (আয়তক্ষেত্রের মান) p পিক্সেলউইথফ্যাক্টর = সিস্টেমপ্যারামিটারস W ওয়ার্কআরিয়া.উইথথ / এই.স্ক্রিন।ওয়ার্কিংআরিয়া.উইথথ; var পিক্সেলহাইটফ্যাক্টর = সিস্টেমপ্যারামিটার. ওয়ার্কআরিয়া.হাইট / এই.স্ক্রিন.ওয়ার্কিংআরিয়া.হাইট; নতুন রেক্ট return এক্স = মান। এক্স * পিক্সেলউইথফ্যাক্টর, ওয়াই = মান.ওয়াই * পিক্সেলহাইটফ্যাক্টর, প্রস্থ = মান। প্রস্থ * পিক্সেলউইথফ্যাক্টর, উচ্চতা = মান। উচ্চতা * পিক্সেলহাইটফ্যাক্টর return; }
জর্জেন বায়ার

4
আমি বিশ্বাস করি @ জুরজেনবায়ার থেকে কোড যুক্ত করা আপনার উত্তরকে আরও উন্নত করবে। আমার কাছে ডিভাইসটি স্বাধীন পিক্সেল এবং জারজেনের কোডটি সমাধান করে দিয়ে বিষয়টি নিয়েছিল। দুজন কেই ধন্যবাদ.
ব্রুনো ভি

4
@ জারজেন: আমি বিশ্বাস করি যে আপনার পদ্ধতিটি কেবল খুব নির্দিষ্ট পরিস্থিতিতে কাজ করে। যদি "এটি.স্ক্রিন" এর প্রাথমিক মনিটরের চেয়ে আলাদা দিক অনুপাত থাকে (যা আপনার পদ্ধতিটি সর্বদা বর্তমান মনিটরের পরিবর্তে একটি রেফারেন্স হিসাবে ব্যবহার করে), আপনি ভুলভাবে পর্দার মাত্রা বাড়াতে প্রস্থ এবং উচ্চতার জন্য বিভিন্ন স্কেল উপাদান পেয়ে যাবেন। যদি বর্তমান স্ক্রিনের প্রাথমিক স্ক্রিনের চেয়ে আলাদা ডিপিআই সেটিং থাকে তবে সীমাগুলি সবই ভুল হয়ে যাবে। আমার সিস্টেমে, ফিরে আসা রেক্টের প্রতিটি একক মান (বন্যভাবে) ভুল।
উইলফোর্ড

28

এখানে কুঁড়ি। এটি আপনাকে কাজেরিয়ার প্রস্থ এবং উচ্চতা দেবে

System.Windows.SystemParameters.WorkArea.Width
System.Windows.SystemParameters.WorkArea.Height

13
"প্রাথমিক প্রদর্শন মনিটরে কাজের ক্ষেত্রের আকার পায়" " - আমি যা খুঁজছিলাম তা নয় ....
নীল

11

এটি আপনাকে উইন্ডোর উপরের বামের উপর ভিত্তি করে বর্তমান স্ক্রিনটি দেবে কেবল বর্তমান স্ক্রিনটিতে তথ্য পেতে এটি কল করুন urrent বর্তমান স্ক্রিন ()।

using System.Windows;
using System.Windows.Forms;

namespace Common.Helpers
{
    public static class WindowHelpers
     {
        public static Screen CurrentScreen(this Window window)
         {
             return Screen.FromPoint(new System.Drawing.Point((int)window.Left,(int)window.Top));
         }
     }
}

ব্যবহারকারী প্রাথমিক স্ক্রিনের চেয়ে বর্তমান পর্দার মাত্রা অনুসন্ধান করছে।
গ্রেগ্যাননিকোট

4
এটি উইন্ডোর উপরের বাম অবস্থানের উপর ভিত্তি করে বর্তমান স্ক্রিনটি ফেরত দেয় যা আপনি সাহায্যকারীকে ফাংশন থেকে কল করেন। তবে আমার উত্তরের স্কোরের উপর ভিত্তি করে আমি অবশ্যই এই প্রশ্নের কিছু মিস করছি।
ইজে

সম্ভবত গ্রেগ্যানিকোট মানেই অন্য কোনও উত্তরটিতে তাঁর মন্তব্য পোস্ট করা, কারণ এটি এই উত্তরটির সাথে সম্পূর্ণ অপ্রাসঙ্গিক।
জিম বাল্টার

@ জিম-বাল্টার ভোটা আপ - আসলে এটিই এখানে সেরা উত্তর, কর্মক্ষেত্র পাওয়ার জন্য আমার স্ক্রিনের প্রয়োজন ছিল এবং তারপরে নিশ্চিত করুন যে আমার ডায়লগটি সীমা ছাড়িয়েছে না, আমি এখানে আমার সমাধান পোস্ট করব। পয়েন্ট উত্তরের তাত্ক্ষণিকতার জন্য ইজেজেড থেকে কুডোস।
জুলভ

iz উদ্ভট মন্তব্য।
জিম বাল্টার

5

সিস্টেমপ্যারামিটার সদস্যদের মাধ্যমে স্ক্যান করতে সময় নিন।

  • VirtualScreenWidth
  • VirtualScreenHeight

এগুলি পর্দার তুলনামূলক অবস্থানগুলিও বিবেচনা করে।

শুধুমাত্র দুটি মনিটরের সাথে পরীক্ষিত।


9
ডানা - আমি এটি পরীক্ষা করে দেখিনি, তবে ভার্চুয়ালস্ক্রিন * সমস্ত স্ক্রিনের পুরো আকার ফেরায় না? - আমার বিশেষত একটি স্ক্রিনের আকার প্রয়োজন (বর্তমান উইন্ডোটি যেটিতে থাকে তার একটি)।
নিলস

4
ভার্চুয়ালস্ক্রিন সমস্ত পর্দার আকার বলে মনে হচ্ছে
থমাস

4
এটি আমার একটিতে আমার সমস্ত স্ক্রিনের সম্মিলিত 4 টি আকার দেওয়া হয়েছিল।
ডিজে ভ্যান উইক

4

আমার বর্তমান স্ক্রিনের মাত্রাও দরকার ছিল, বিশেষত ওয়ার্ক-এরিয়া, যা টাস্কবারের প্রস্থ বাদ দিয়ে আয়তক্ষেত্রটি ফিরিয়েছিল।

আমি এটি একটি উইন্ডো প্রতিস্থাপনের জন্য ব্যবহার করেছি, যা মাউসটি অবস্থিত যেখানে ডানদিকে এবং নীচে খোলা হয়েছে। উইন্ডোটি মোটামুটি বড় হওয়ায় বেশিরভাগ ক্ষেত্রে এটি স্ক্রিনের বাইরে চলে যায়। নিম্নলিখিত কোডটি @ ইজে উত্তরের উপর ভিত্তি করে: এটি আপনাকে বর্তমান স্ক্রিনটি দেবে ... । পার্থক্যটি হ'ল আমি আমার অবস্থার অ্যালগোরিদমটিও প্রদর্শন করি, যা আমি অনুমান করি যে এটি আসলে বিন্দু।

কোড:

using System.Windows;
using System.Windows.Forms;

namespace MySample
{

    public class WindowPostion
    {
        /// <summary>
        /// This method adjust the window position to avoid from it going 
        /// out of screen bounds.
        /// </summary>
        /// <param name="topLeft">The requiered possition without its offset</param>
        /// <param name="maxSize">The max possible size of the window</param>
        /// <param name="offset">The offset of the topLeft postion</param>
        /// <param name="margin">The margin from the screen</param>
        /// <returns>The adjusted position of the window</returns>
        System.Drawing.Point Adjust(System.Drawing.Point topLeft, System.Drawing.Point maxSize, int offset, int margin)
        {
            Screen currentScreen = Screen.FromPoint(topLeft);
            System.Drawing.Rectangle rect = currentScreen.WorkingArea;

            // Set an offset from mouse position.
            topLeft.Offset(offset, offset);

            // Check if the window needs to go above the task bar, 
            // when the task bar shadows the HUD window.
            int totalHight = topLeft.Y + maxSize.Y + margin;

            if (totalHight > rect.Bottom)
            {
                topLeft.Y -= (totalHight - rect.Bottom);

                // If the screen dimensions exceed the hight of the window
                // set it just bellow the top bound.
                if (topLeft.Y < rect.Top)
                {
                    topLeft.Y = rect.Top + margin;
                }
            }

            int totalWidth = topLeft.X + maxSize.X + margin;
            // Check if the window needs to move to the left of the mouse, 
            // when the HUD exceeds the right window bounds.
            if (totalWidth > rect.Right)
            {
                // Since we already set an offset remove it and add the offset 
                // to the other side of the mouse (2x) in addition include the 
                // margin.
                topLeft.X -= (maxSize.X + (2 * offset + margin));

                // If the screen dimensions exceed the width of the window
                // don't exceed the left bound.
                if (topLeft.X < rect.Left)
                {
                    topLeft.X = rect.Left + margin;
                }
            }

            return topLeft;
        }
    }
}

কিছু ব্যাখ্যা:

1) topLeft - position of the top left at the desktop (works                     
   for multi screens - with different aspect ratio).                            
            Screen1              Screen2                                        
        ─  ┌───────────────────┐┌───────────────────┐ Screen3                   
        ▲  │                   ││                   │┌─────────────────┐  ─     
        │  │                   ││                   ││   ▼-            │  ▲     
   1080 │  │                   ││                   ││                 │  │     
        │  │                   ││                   ││                 │  │ 900 
        ▼  │                   ││                   ││                 │  ▼     
        ─  └──────┬─────┬──────┘└──────┬─────┬──────┘└──────┬────┬─────┘  ─     
                 ─┴─────┴─            ─┴─────┴─            ─┴────┴─             
           │◄─────────────────►││◄─────────────────►││◄───────────────►│        
                   1920                 1920                1440                
   If the mouse is in Screen3 a possible value might be:                        
   topLeft.X=4140 topLeft.Y=195                                                 
2) offset - the offset from the top left, one value for both                    
   X and Y directions.                                                          
3) maxSize - the maximal size of the window - including its                     
   size when it is expanded - from the following example                        
   we need maxSize.X = 200, maxSize.Y = 150 - To avoid the expansion            
   being out of bound.                                                          

   Non expanded window:                                                         
   ┌──────────────────────────────┐ ─                                           
   │ Window Name               [X]│ ▲                                           
   ├──────────────────────────────┤ │                                           
   │         ┌─────────────────┐  │ │ 100                                       
   │  Text1: │                 │  │ │                                           
   │         └─────────────────┘  │ │                                           
   │                         [▼]  │ ▼                                           
   └──────────────────────────────┘ ─                                           
   │◄────────────────────────────►│                                             
                 200                                                            

   Expanded window:                                                             
   ┌──────────────────────────────┐ ─                                           
   │ Window Name               [X]│ ▲                                           
   ├──────────────────────────────┤ │                                           
   │         ┌─────────────────┐  │ │                                           
   │  Text1: │                 │  │ │                                           
   │         └─────────────────┘  │ │ 150                                       
   │                         [▲]  │ │                                           
   │         ┌─────────────────┐  │ │                                           
   │  Text2: │                 │  │ │                                           
   │         └─────────────────┘  │ ▼                                           
   └──────────────────────────────┘ ─                                           
   │◄────────────────────────────►│                                             
                 200                                                            
4) margin - The distance the window should be from the screen                   
   work-area - Example:                                                          
   ┌─────────────────────────────────────────────────────────────┐ ─            
   │                                                             │ ↕ Margin     
   │                                                             │ ─            
   │                                                             │              
   │                                                             │              
   │                                                             │              
   │                          ┌──────────────────────────────┐   │              
   │                          │ Window Name               [X]│   │              
   │                          ├──────────────────────────────┤   │              
   │                          │         ┌─────────────────┐  │   │              
   │                          │  Text1: │                 │  │   │              
   │                          │         └─────────────────┘  │   │              
   │                          │                         [▲]  │   │              
   │                          │         ┌─────────────────┐  │   │              
   │                          │  Text2: │                 │  │   │              
   │                          │         └─────────────────┘  │   │              
   │                          └──────────────────────────────┘   │ ─            
   │                                                             │ ↕ Margin     
   ├──────────────────────────────────────────────────┬──────────┤ ─            
   │[start] [♠][♦][♣][♥]                              │en│ 12:00 │              
   └──────────────────────────────────────────────────┴──────────┘              
   │◄─►│                                                     │◄─►│              
    Margin                                                    Margin            

* Note that this simple algorithm will always want to leave the cursor          
  out of the window, therefor the window will jumps to its left:                
  ┌─────────────────────────────────┐        ┌─────────────────────────────────┐
  │                  ▼-┌──────────────┐      │  ┌──────────────┐▼-             │
  │                    │ Window    [X]│      │  │ Window    [X]│               │
  │                    ├──────────────┤      │  ├──────────────┤               │
  │                    │       ┌───┐  │      │  │       ┌───┐  │               │
  │                    │  Val: │   │  │ ->   │  │  Val: │   │  │               │
  │                    │       └───┘  │      │  │       └───┘  │               │
  │                    └──────────────┘      │  └──────────────┘               │
  │                                 │        │                                 │
  ├──────────────────────┬──────────┤        ├──────────────────────┬──────────┤
  │[start] [♠][♦][♣]     │en│ 12:00 │        │[start] [♠][♦][♣]     │en│ 12:00 │
  └──────────────────────┴──────────┘        └──────────────────────┴──────────┘
  If this is not a requirement, you can add a parameter to just use             
  the margin:                                                                   
  ┌─────────────────────────────────┐        ┌─────────────────────────────────┐
  │                  ▼-┌──────────────┐      │                ┌─▼-───────────┐ │
  │                    │ Window    [X]│      │                │ Window    [X]│ │
  │                    ├──────────────┤      │                ├──────────────┤ │
  │                    │       ┌───┐  │      │                │       ┌───┐  │ │
  │                    │  Val: │   │  │ ->   │                │  Val: │   │  │ │
  │                    │       └───┘  │      │                │       └───┘  │ │
  │                    └──────────────┘      │                └──────────────┘ │
  │                                 │        │                                 │
  ├──────────────────────┬──────────┤        ├──────────────────────┬──────────┤
  │[start] [♠][♦][♣]     │en│ 12:00 │        │[start] [♠][♦][♣]     │en│ 12:00 │
  └──────────────────────┴──────────┘        └──────────────────────┴──────────┘
* Supports also the following scenarios:
  1) Screen over screen:
       ┌─────────────────┐  
       │                 │
       │                 │
       │                 │
       │                 │
       └─────────────────┘
     ┌───────────────────┐ 
     │                   │ 
     │  ▼-               │ 
     │                   │ 
     │                   │ 
     │                   │ 
     └──────┬─────┬──────┘ 
           ─┴─────┴─       
  2) Window bigger than screen hight or width
     ┌─────────────────────────────────┐        ┌─────────────────────────────────┐ 
     │                                 │        │ ┌──────────────┐                │
     │                                 │        │ │ Window    [X]│                │
     │                  ▼-┌────────────│─┐      │ ├──────────────┤ ▼-             │
     │                    │ Window    [│]│      │ │       ┌───┐  │                │
     │                    ├────────────│─┤ ->   │ │  Val: │   │  │                │ 
     │                    │       ┌───┐│ │      │ │       └───┘  │                │
     │                    │  Val: │   ││ │      │ │       ┌───┐  │                │
     │                    │       └───┘│ │      │ │  Val: │   │  │                │
     ├──────────────────────┬──────────┤ │      ├──────────────────────┬──────────┤
     │[start] [♠][♦][♣]     │en│ 12:00 │ │      │[start] [♠][♦][♣]     │en│ 12:00 │
     └──────────────────────┴──────────┘ │      └──────────────────────┴──────────┘
                          │       ┌───┐  │        │       └───┘  │
                          │  Val: │   │  │        └──────────────┘
                          │       └───┘  │
                          └──────────────┘


     ┌─────────────────────────────────┐             ┌─────────────────────────────────┐     
     │                                 │             │                                 │ 
     │                                 │             │ ┌───────────────────────────────│───┐
     │    ▼-┌──────────────────────────│────────┐    │ │ W▼-dow                        │[X]│
     │      │ Window                   │     [X]│    │ ├───────────────────────────────│───┤
     │      ├──────────────────────────│────────┤    │ │       ┌───┐      ┌───┐      ┌─┤─┐ │
     │      │       ┌───┐      ┌───┐   │  ┌───┐ │ -> │ │  Val: │   │ Val: │   │ Val: │ │ │ │
     │      │  Val: │   │ Val: │   │ Va│: │   │ │    │ │       └───┘      └───┘      └─┤─┘ │
     │      │       └───┘      └───┘   │  └───┘ │    │ └───────────────────────────────│───┘
     ├──────────────────────┬──────────┤────────┘    ├──────────────────────┬──────────┤
     │[start] [♠][♦][♣]     │en│ 12:00 │             │[start] [♠][♦][♣]     │en│ 12:00 │     
     └──────────────────────┴──────────┘             └──────────────────────┴──────────┘     
  • কোড ফর্ম্যাটটি ব্যবহার করা ছাড়া আমার আর কোন উপায় ছিল না (অন্যথায় সাদা স্পেসগুলি হারিয়ে যেত)।
  • মূলত এটি উপরের কোডটিতে একটি হিসাবে উপস্থিত হয়েছিল <remark><code>...</code></remark>

3

কেন শুধু এটি ব্যবহার করবেন না?

var interopHelper = new WindowInteropHelper(System.Windows.Application.Current.MainWindow);
var activeScreen = Screen.FromHandle(interopHelper.Handle);

স্ক্রিনটি ডাব্লুপিএফের চেয়ে উইন্ডোজ.ফর্মস - তবে এটি একটি সূচনা পয়েন্ট। আমি যদি তখন যে সমাধানটি ব্যবহার করেছি তার দিকে যদি আপনি তাকান তবে ( stackoverflow.com/a/2118993/180156 ) এটি হ'ল আমি যা করেছি - তবে আমি System.Windows.Forms.Screenডিভাইসের স্বতন্ত্র পিক্সেলটির সাথে লড়াই করতে
নীল

3

আপনি যদি সিস্টেম. উইন্ডোস.ফর্মস শ্রেণীর ব্যবহারের সাথে পরিচিত হন তবে আপনি কেবল আপনার প্রকল্পে সিস্টেম. উইন্ডোজ.ফর্মস শ্রেণীর একটি উল্লেখ যুক্ত করতে পারেন :

সমাধান এক্সপ্লোরার -> তথ্যসূত্র -> রেফারেন্স যুক্ত করুন ... -> (সমাবেশগুলি: ফ্রেমওয়ার্ক) -> স্ক্রল ডাউন করুন এবং System.Windows.forms সমাবেশ -> ঠিক আছে দেখুন

এখন আপনি System.Windows.forms ব্যবহার করে যুক্ত করতে পারেন ; আপনার ডাব্লুপিএফ প্রকল্পে ঠিক আগের মত বিবৃতি এবং ব্যবহারের পর্দা।


এটি এখন পর্যন্ত সবচেয়ে সহজ সমাধান। আমি ভাবছি - একটি বৃহত্তর সমাবেশ যোগ করা ছাড়াও, এইভাবে এটি না করার কোনও ভাল কারণ আছে?
অয়নঅফটাইম

1

আমি চাহিদা বুঝতে। বিষয়টি হ'ল, এই মানগুলি পাওয়ার জন্য ডব্লিউপিএফ পদ্ধতি রয়েছে - তবে হ্যাঁ, অন্যতম অবদানকারী সঠিক, সরাসরি নয়। সমাধানটি এই সমস্ত কাজের সমাধান পাওয়ার জন্য নয়, তবে পরিষ্কার নকশা এবং বিকাশ অনুযায়ী প্রাথমিক পদ্ধতির পরিবর্তন করা।

ক) স্ক্রিনে প্রাথমিক প্রধান উইন্ডোটি সেট করুন

খ) এক টন দরকারী ডাব্লুপিএফ পদ্ধতি সহ প্রকৃত উইন্ডোর মানগুলি পান

গ) আপনি যে আকারের উইন্ডোজটি চান তার জন্য আপনি যতটা উইন্ডোজ যুক্ত করতে চান, পুনরায় আকারের মতো, যা কিছুটা কমিয়ে আনতে পারেন… তবে এখন আপনি সর্বদা লোডড এবং রেন্ডারড স্ক্রিন অ্যাক্সেস করতে পারবেন

দয়া করে নীচের উদাহরণটির সাথে সাবধান হন, চারপাশে এমন কিছু কোড রয়েছে যা এই ধরণের পদ্ধতির ব্যবহার করা প্রয়োজনীয় করে তোলে তবে এটির কাজ করা উচিত (এটি আপনাকে আপনার পর্দার প্রতিটি কোণার জন্য পয়েন্ট দেয়): একক, দ্বৈত মনিটর এবং বিভিন্ন রেজোলিউশন (প্রথম প্রধান উইন্ডো শ্রেণীর মধ্যে):

InitializeComponent();
[…]
ActualWindow.AddHandler(Window.LoadedEvent, new RoutedEventHandler(StartUpScreenLoaded));

রুটেড ইভেন্ট:

private void StartUpScreenLoaded(object sender, RoutedEventArgs e)
    {
        Window StartUpScreen = sender as Window;

        // Dispatcher Format B:
        Dispatcher.Invoke(new Action(() =>
        {
            // Get Actual Window on Loaded
            StartUpScreen.InvalidateVisual();
            System.Windows.Point CoordinatesTopRight = StartUpScreen.TranslatePoint(new System.Windows.Point((StartUpScreen.ActualWidth), (0d)), ActualWindow);
            System.Windows.Point CoordinatesBottomRight = StartUpScreen.TranslatePoint(new System.Windows.Point((StartUpScreen.ActualWidth), (StartUpScreen.ActualHeight)), ActualWindow);
            System.Windows.Point CoordinatesBottomLeft = StartUpScreen.TranslatePoint(new System.Windows.Point((0d), (StartUpScreen.ActualHeight)), ActualWindow);

            // Set the Canvas Top Right, Bottom Right, Bottom Left Coordinates
            System.Windows.Application.Current.Resources["StartUpScreenPointTopRight"] = CoordinatesTopRight;
            System.Windows.Application.Current.Resources["StartUpScreenPointBottomRight"] = CoordinatesBottomRight;
            System.Windows.Application.Current.Resources["StartUpScreenPointBottomLeft"] = CoordinatesBottomLeft;
        }), DispatcherPriority.Loaded);
    }

1

আপনি যদি কোনও পূর্ণ স্ক্রিন উইন্ডো ব্যবহার করেন (এর রয়েছে WindowState = WindowState.Maximized, WindowStyle = WindowStyle.None) তবে আপনি এর বিষয়বস্তুগুলি এইভাবে মোড়ানো করতে পারেন System.Windows.Controls.Canvas:

<Canvas Name="MyCanvas" Width="auto" Height="auto">
...
</Canvas>

তারপরে আপনি MyCanvas.ActualWidthএবং ব্যবহার করতে পারেনMyCanvas.ActualHeight ডিপিআই সেটিংস অ্যাকাউন্টে নেওয়া এবং ডিভাইস স্বতন্ত্র ইউনিটগুলিতে বর্তমান পর্দার রেজোলিউশনটি পেতে । এটি সর্বাধিক উইন্ডো যেমন করে তেমন কোনও মার্জিন যুক্ত করে না।

(ক্যানভাস UIElementশিশুদের হিসাবে এটি গ্রহণ করে , তাই আপনার কোনও সামগ্রী সহ এটি ব্যবহার করতে সক্ষম হওয়া উচিত))


0

এক্সএএমএল-তে স্ক্রিনের সেন্টার উইন্ডোটি WindowStartupLocation="CenterOwner"জানালায় উইন্ডোলোডে কল করুন ()

double ScreenHeight = 2 * (Top + 0.5 * Height);


-4
double screenWidth = System.Windows.SystemParameters.PrimaryScreenWidth;
double screenhight= System.Windows.SystemParameters.PrimaryScreenHeight;

4
পূর্ববর্তী উত্তরের মতো এটি কেবলমাত্র প্রাথমিক স্ক্রিনের জন্য। আমার বর্তমান পর্দার দরকার ছিল ।
নিলস

-4

এটি সঙ্গে কাজ করে

this.Width = System.Windows.SystemParameters.VirtualScreenWidth;
this.Height = System.Windows.SystemParameters.VirtualScreenHeight;

2 মনিটরের উপর পরীক্ষিত।


আপনি যদি 18 ই মে '10 থেকে 15:52-এ উত্তরটি তাকান - যা আপনার মত একই ছিল আপনি দেখতে পাবেন যে VirtualScreenসমস্ত পর্দা ছড়িয়ে পড়ে - তাই আপনার যদি একাধিক পর্দা থাকে তবে এটি কখনই কাজ করবে না!
নীল
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.