私はWPFのVideoTransportコントロールを最初から開発しています。これはYouTubeのようです。これは完全に拡張性があり、MVVM freindly(あなたが望む場合は参加することができます)https://github.com/Camuvingian/symmetrical-spork)ので、このコントロールを書いています。今WPFパスを使用してポーズボタンを描画する方法
、CreatePlayButton
方法は、これが正しい形状を作成し、私はそれで満足してい
private Path CreatePlayButton()
{
Path p = new Path();
p.StrokeThickness = 0.0;
p.Fill = Brushes.Gray;
p.HorizontalAlignment = HorizontalAlignment.Center;
p.VerticalAlignment = VerticalAlignment.Center;
Point start = new Point(PlayButtonSize * 0.8, PlayButtonSize/2.0);
LineSegment[] segments = new[]
{
new LineSegment(new Point(0, 0), true),
new LineSegment(new Point(0, PlayButtonSize), true)
};
PathFigure figure = new PathFigure(start, segments, true);
PathGeometry geometry = new PathGeometry(new[] { figure });
p.Margin = new Thickness(16.0, 0, 0, 8.0);
p.Data = geometry;
p.MouseEnter += (s, e) => { p.Fill = Brushes.LightGray; };
p.MouseLeave += (s, e) => { p.Fill = Brushes.Gray; };
return p;
}
ある場合は、私は次のコード
controlGrid = GetTemplateChild("PART_ControlGrid") as Grid;
controlGrid.ColumnDefinitions.Add(new ColumnDefinition() { Width = GridLength.Auto });
controlGrid.ColumnDefinitions.Add(new ColumnDefinition() { Width = GridLength.Auto });
controlGrid.ColumnDefinitions.Add(new ColumnDefinition() { Width = GridLength.Auto });
controlGrid.ColumnDefinitions.Add(new ColumnDefinition() { Width = GridLength.Auto });
controlGrid.ColumnDefinitions.Add(new ColumnDefinition() { Width = GridLength.Auto });
controlGrid.ColumnDefinitions.Add(new ColumnDefinition() { Width = new GridLength(1, GridUnitType.Star) });
controlGrid.ColumnDefinitions.Add(new ColumnDefinition() { Width = GridLength.Auto });
controlGrid.ColumnDefinitions.Add(new ColumnDefinition() { Width = GridLength.Auto });
controlGrid.ColumnDefinitions.Add(new ColumnDefinition() { Width = GridLength.Auto });
Path playButton = CreatePlayButton();
Grid.SetColumn(playButton, 0);
controlGrid.Children.Add(playButton);
を使用して再生ボタンを生成します。
さて、私はあなたには問題は、どのように、これはWPFのコードで行われている、2つの垂直parrallelの長方形のものを知っている、一時停止ボタンの形状を作成したいと思います。私は次のメソッドを追加しようとしました
private Path CreatePauseButton()
{
Path p = new Path();
p.StrokeThickness = 0.0;
p.Fill = Brushes.Gray;
p.HorizontalAlignment = HorizontalAlignment.Center;
p.VerticalAlignment = VerticalAlignment.Center;
double f = 1.0/7.0;
Point start = new Point(PlayButtonSize * f, 0.0);
LineSegment[] segments = new[]
{
new LineSegment(new Point(PlayButtonSize * f, PlayButtonSize), true),
new LineSegment(new Point((PlayButtonSize * f) * 3.0, PlayButtonSize), true),
new LineSegment(new Point((PlayButtonSize * f) * 3.0, 0.0), true),
new LineSegment(new Point(PlayButtonSize * f, 0.0), true),
new LineSegment(new Point((PlayButtonSize * f) * 4, PlayButtonSize), false),
new LineSegment(new Point((PlayButtonSize * f) * 6, PlayButtonSize), true),
new LineSegment(new Point((PlayButtonSize * f) * 6, 0.0), true),
new LineSegment(new Point((PlayButtonSize * f) * 4, 0.0), true)
};
PathFigure figure = new PathFigure(start, segments, true);
PathGeometry geometry = new PathGeometry(new[] { figure });
p.Margin = new Thickness(16.0, 0, 0, 8.0);
p.Data = geometry;
p.MouseEnter += (s, e) => { p.Fill = Brushes.LightGray; };
p.MouseLeave += (s, e) => { p.Fill = Brushes.Gray; };
return p;
}
しかし、これは私が言わなかった行をレンダリングします。質問:
- 私が必要とする一時停止ボタンを描画するにはどうすればよいですか?
お時間をいただきありがとうございます。
ps。これは進行中の作業であり、誰かが私がここに書いていないかもしれない事についてのコメントを持っているならば、彼らは歓迎されている以上のものです。
あなたがコードでパスを作成する必要がありますか?そうでない場合、私は XAMLリソースファイルであなたの一時停止ボタンを保存するためにお勧めします。このウェブサイトでは、XAMLパス https://materialdesignicons.com/icon/pause としてのアイコンを提供しています。ここ一時停止ボタンを <どのように見えるかですパスデータ= "M14,19H18V5H14M6,19H10V5H6V19Z" /> –
XAMLパス定義の構文を15分で学習し、「一時停止」のような長方形の場合は、独自のアイコンを作成することができます。 C#でそれをやってはいけません、それはマゾヒズムです。 –
さて、私はその質問をした直後に、これを行うためのツールについて考えてみました。これらのコメントは本当に役に立ちます。ありがとう。 – MoonKnight