0

Windowsフォーム内でキャンバスを使用しようとしており、そのキャンバスをズームおよびパンするために、最初に要素ホストを配置し、次にキャンバスをその中に配置してから、キャンバスにピクチャボックスを配置してから、キャンバスをズームしようとしています。さまざまな方法を試しましたが、いずれかのイベントコントロールが実行されません私もすべてのマウスホイールイベントを書きましたが、誰も実行されていないので、以下の解決策がコントロールとマウスホイールイベントを追加するための私のコードであることを提案してください

         elementHost1.Height = picVarify.Height;
        elementHost1.Width = picVarify.Width;
        elementHost1.Location = picVarify.Location;
        touchcanvas = new System.Windows.Controls.Canvas();
        WindowsFormsHost hst = new WindowsFormsHost();
        hst.Name = "Host";
        hst.Child = picVarify;
        hst.Height = picVarify.Height;
        hst.Width = picVarify.Width;
        touchcanvas.Height = picVarify.Height;
        touchcanvas.Width = picVarify.Width;
        touchcanvas.Children.Add(hst);
        zm = new ZoomAndPan.ZoomAndPanControl();
        zm.Name = "zm";
        zm.Content = touchcanvas;
        zm.MouseWheel += new System.Windows.Input.MouseWheelEventHandler(zoomAndPanControl_MouseWheel);
        elementHost1.Child = zm;
        touchcanvas.MouseWheel += new System.Windows.Input.MouseWheelEventHandler(touchcanvas_MouseWheel);
        hst.MouseWheel += new System.Windows.Input.MouseWheelEventHandler(hst_MouseWheel);
        picVarify.MouseWheel += new MouseEventHandler(picverify_MouseWheel);
4

1 に答える 1

0

これが私にとってうまくいくコードです。キャンバス内にキャンバスを追加し、両方のキャンバスの背景プロパティを設定しました。

XAML

<Window x:Class="WpfStack.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="MainWindow" Height="350" Width="525">
<Grid x:Name="rootGrid" Margin="10,0,0.4,3.8">
    <Canvas Name="BaseCanvas" Background="AliceBlue" Margin="10,0,0,10">

    </Canvas>
</Grid>

コード

     public MainWindow()
        {
            InitializeComponent();
            Canvas touchcanvas = new System.Windows.Controls.Canvas();
            touchcanvas.Height =100;
            touchcanvas.Width = 100;
            touchcanvas.Background = Brushes.Transparent;
            touchcanvas.MouseWheel += new System.Windows.Input.MouseWheelEventHandler(touchcanvas_MouseWheel);
            BaseCanvas.Children.Add(touchcanvas);
            BaseCanvas.Background = Brushes.Transparent;

        }

     public void touchcanvas_MouseWheel(object sender, System.Windows.Input.MouseWheelEventArgs args)
        {
            args.Handled = true;

        }
于 2015-10-09T06:02:19.280 に答える