ペイントアプリケーションを開発しています。ホワイトボードとしてCanvasコントロールを使用しています。
WPFキャンバスでInkCanvasのような機能を使用したいので、Canvasにフリーハンドの形状を描画したいということです。これどうやってするの ?また、*。JPGとして保存したい
2番目の質問は、MSペイントで行うようにフォントを描画することです。FontDialogBoxを統合できますか?はいの場合、どのように?
ありがとう!!!
キャンバスに線を引く簡単な例と、textBlockオブジェクトを追加する方法を次に示します。
例:
<StackPanel>
<Canvas MouseLeftButtonDown="myCanvas_MouseLeftButtonDown" MouseMove="myCanvas_MouseMove"
x:Name="inkCanvas" Width="400" Height="200"> </Canvas>
<Button Height="20" Width="30" x:Name="AddTextBtn" Click="AddTextBtn_Click">AddText</Button>
</StackPanel>
コードビハインド:
private Point _startPoint;
private Polyline _line;
private void myCanvas_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
_startPoint = e.GetPosition(myCanvas);
_line = new Polyline();
_line.Stroke = new SolidColorBrush(Colors.Black);
_line.StrokeThickness = 2.0;
myCanvas.Children.Add(_line);
}
private void myCanvas_MouseMove(object sender, MouseEventArgs e)
{
if (e.LeftButton == MouseButtonState.Pressed)
{
Point currentPoint = e.GetPosition(myCanvas);
if (_startPoint != currentPoint)
{
_line.Points.Add(currentPoint);
}
}
}
private void AddTextBtn_Click(object sender, RoutedEventArgs e)
{
// Show Font Dialog Box
TextBlock tb = new TextBlock();
tb.FontFamily = new FontFamily("Arial");
tb.FontSize = 14;
tb.Text = "SampleText";
// Set position on canvas:
Canvas.SetTop(tb,100);
Canvas.SetLeft(tb, 50);
myCanvas.Children.Add(tb);
}
しかし、純粋なWPFフォントチューザーはありません。WinFormsからのものを使用するか、純粋なXaml実装がたくさんあることを確認することができます。例:リンク
jpgとして保存:RenderTargetBitmapまたはCroppedBitmapを使用します。SOのリンクを参照してください