How to draw a rectangle in WPF at a specific x,y screen location?

前端 未结 1 1921
孤街浪徒
孤街浪徒 2021-01-04 20:17

In C#, WPF I\'ve created a rectangle:

        Rectangle myRgbRectangle = new Rectangle();
        myRgbRectangle.Width = 1;
        myRgbRectangle.Height = 1         


        
相关标签:
1条回答
  • 2021-01-04 20:52

    You need to use a Canvas istead of a Grid. You use coordinates to position elements in a Canvas versus Column and Row in a Grid.

    Definition of a Canvas:

    Defines an area within which you can explicitly position child elements by using coordinates that are relative to the Canvas area.

    You would then use Canvas.SetTop and Canvas.SetLeft Properties like this (assuming that your canvas is named myCanvas):

     myCanvas.Children.Add(myRgbRectangle);
     Canvas.SetTop(myRgbRectangle, 50);
     Canvas.SetLeft(myRgbRectangle, 50);
    

    Edit

    Based on your edit, it is like I said you are adding the same rectangle more than once. You need to be creating it in your For Loop each time you add it. Something like this.

    for (int i = 0; i < ElevationManager.Instance.heightData.GetLength(0); i++) 
        for (int j = 0; j < ElevationManager.Instance.heightData.GetLength(1); j++) 
        { 
            Rectangle rect = new Rectangle();
            rect.Width = 1;
            rect.Height = 1;
            height = ElevationManager.Instance.heightData[i, j] / 100; 
            // Describes the brush's color using RGB values.  
            // Each value has a range of 0-255. 
            mySolidColorBrush.Color = Color.FromArgb(255, 0, 0, (byte)height); 
            rect.Fill = mySolidColorBrush; 
    
            myCanvas.Children.Add(rect); 
            Canvas.SetTop(rect, j); 
            Canvas.SetLeft(rect, i); 
        }
    
    0 讨论(0)
提交回复
热议问题