首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >WPF InkCanvas -一些中风没有收集

WPF InkCanvas -一些中风没有收集
EN

Stack Overflow用户
提问于 2018-10-03 16:32:07
回答 1查看 326关注 0票数 0

我有一个WPF应用程序,其中有一个使用墨画布控件的签名页。我有一个非常随意的问题,一些笔画不能在笔画收集中收集,然后消失。我知道,软件中的“随机”一词是禁忌--但相信我,它是随机的,不会发生多线程。

这个问题发生在使用鼠标和触摸输入。

InkCanvas的Gif

我不知道源代码在这一点上是否有用,但我会将它放在下面

SignatureForm.cs

代码语言:javascript
复制
    public partial class SignatureForm : UserControl
        {
            public event EventHandler SubmitButtonClick;

            private byte[] _signatureBytes;
            public byte[] SignatureBytes
            {
                get
                {
                     _signatureBytes = SignatureHelper.GetStrokeBytes(SignatureCanvas.Strokes, SignatureCanvas);

                    return _signatureBytes;
                }
                private set => _signatureBytes = value;
            }

            private Bitmap _signatureImage;

            public Bitmap SignatureImage
            {
                get
                {
                    _signatureImage = SignatureHelper.GetSignatureImage(SignatureCanvas);
                    return _signatureImage;
                }
                private set => _signatureImage = value;
            }

            public SignatureForm()
            {
                InitializeComponent();
                ClearButton.Visibility = Visibility.Hidden;
                PlaceholderText.Visibility = Visibility.Visible;
                AcceptButton.Visibility = Visibility.Hidden;
            }

            private void SubmitButton_TouchUp(object sender, TouchEventArgs e)
            {
                if (TouchIndicator.IsTouchEnabled)
                    SubmitButtonClick?.Invoke(sender, e);
            }

            private void SubmitButton_MouseUp(object sender, MouseButtonEventArgs e)
            {
                if (!TouchIndicator.IsTouchEnabled)
                    SubmitButtonClick?.Invoke(sender, e);
            }

            private void ClearButton_OnMouseUp(object sender, MouseButtonEventArgs e)
            {
                Clear();
            }

            private void ClearButton_OnTouchUp(object sender, TouchEventArgs e)
            {
                Clear();
            }

            private void Clear()
            {
                SignatureCanvas.Strokes.Clear();
                SubmitHide();
            }

            private void SignatureCanvas_OnStrokeCollected(object sender, InkCanvasStrokeCollectedEventArgs e)
            {
                SubmitReveal();
            }

            private void SignatureCanvas_OnTouchDown(object sender, TouchEventArgs e)
            {
                SubmitReveal();
            }

            private void SubmitReveal()
            {
                ClearButton.Visibility = Visibility.Visible;
                PlaceholderText.Visibility = Visibility.Hidden;
                AcceptButton.Visibility = Visibility.Visible;
            }

            private void SubmitHide()
            {
                ClearButton.Visibility = Visibility.Hidden;
                PlaceholderText.Visibility = Visibility.Visible;
                AcceptButton.Visibility = Visibility.Hidden;
            }

            private void SignatureCanvas_OnTouchUp(object sender, TouchEventArgs e)
            {
                if (SignatureCanvas.Strokes.Count == 0) SubmitHide();
            }
        }

SignatureForm.cs.xaml

代码语言:javascript
复制
        <Grid x:Name="SignatureGrid">
            <Grid.RowDefinitions>
                <RowDefinition Height=".75*" />
                <RowDefinition Height=".25*" />
            </Grid.RowDefinitions>
            <Border Grid.Row="0" BorderThickness="2" BorderBrush="{DynamicResource DarkBlue}">
                <Grid>
                    <TextBlock x:Name="PlaceholderText" Style="{StaticResource SignHereText}" Text="Sign here with your finger"/>
                    <InkCanvas x:Name="SignatureCanvas" Style="{StaticResource SignatureCanvas}" StrokeCollected="SignatureCanvas_OnStrokeCollected" TouchDown="SignatureCanvas_OnTouchDown" TouchUp="SignatureCanvas_OnTouchUp" />
                </Grid>
            </Border>
            <Border Grid.Row="0" x:Name="ClearButton" Style="{StaticResource ClearSignatureButton}"
                    MouseUp="ClearButton_OnMouseUp" TouchUp="ClearButton_OnTouchUp">
                <TextBlock x:Name="ButtonText" Text="CLEAR" Style="{StaticResource ClearSignatureText}" />
            </Border>
            <Border Grid.Row="1" BorderThickness="0" BorderBrush="{DynamicResource Teal}" Margin="0 0 0 0"
                    MouseUp="SubmitButton_MouseUp" TouchUp="SubmitButton_TouchUp">
                <TextBlock x:Name="AcceptButton" Style="{DynamicResource SubmitText}">Tap here to submit</TextBlock>
            </Border>
        </Grid>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-10-10 16:43:22

因此我发现了这个问题,有一个属性EditingMode被设置为"InkAndGesture",在移除该属性后,InkCanvas顺利工作并收集所有笔画。

代码语言:javascript
复制
        <Style x:Key="SignatureCanvas" TargetType="InkCanvas">
            <Setter Property="Background" Value="{DynamicResource Transparent}" />
            <!--<Setter Property="EditingMode" Value="InkAndGesture"/>-->
            <Setter Property="DefaultDrawingAttributes">
                <Setter.Value>
                    <DrawingAttributes Width="10" Height="10"/>
                </Setter.Value>
            </Setter>
        </Style>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52631764

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档