none
C# 求高手指点,以下代码是什么意思?谢谢 RRS feed

  • 问题

  • 这是一个视频墙的高度,宽度的算法,主要是计算下图灰色部分,16:9是视频的分辨率 。

    private void screen_Loaded(object sender, RoutedEventArgs e)
            {
                // Keep the aspect ratio of camera window as 16:9
                int col = App.ForestElvesConfig.ScreenWallConfig.ScreenWallSettings.ScreenCol;
                int row = App.ForestElvesConfig.ScreenWallConfig.ScreenWallSettings.ScreenRow;
                double maxRowHeight = screenWall.RowDefinitions[2].ActualHeight;
                double maxColWeight = screenWall.ColumnDefinitions[0].ActualWidth;
                double scHeight = maxColWeight  / col / 16 * 9 * row;
                double scWidth = maxRowHeight / row / 9 * 16 * col;
                if (scHeight >= maxRowHeight)
                {
                    scHeight = maxRowHeight;
                    screenWall.ColumnDefinitions[0].Width = new GridLength(scWidth);
                }
                else
                {
                    double marginHeight = Math.Max((maxRowHeight - scHeight) / 2.0, 0);
                    screenWall.RowDefinitions[1].Height = new GridLength(marginHeight);
                    screenWall.RowDefinitions[2].Height = new GridLength(scHeight);
                    screenWall.RowDefinitions[3].Height = new GridLength(marginHeight);
                }
            }


    • 已编辑 欣然 2013年8月22日 5:08
    • 已移动 ThankfulHeart 2013年8月22日 5:29 WPF问题
    2013年8月22日 4:14

答案

  • 你具体代码Debug就清楚的,这个代码的主要意图是保证相机窗口的长宽比保持16:9

    If my post is helpful,please help to vote as helpful, if my post solve your question, please help to make it as answer. My sample

    2013年8月22日 4:45
  • 你应该为你的screenWall添加一个新的 RowDefination 也就是在这个Grid加一个新行,然后将ComboBox放入新行,在计算scHeight值时候要记住包含你加入的ConboBox的高度即可。

    Bob Bao

    Do you still use the same Windows 8 LockScreen always? Download Chameleon Win8 App quickly, that changes your LockScreen constantly.
    你是否还在看着一成不变的Windows 8锁屏而烦恼,赶紧下载这个 百变锁屏 应用,让你的锁屏不断地变化起来。

    2013年8月28日 6:43
    版主

全部回复