From 8a3ab64a65da226636743be07c4bee63f50da25d Mon Sep 17 00:00:00 2001
From: patrick.xu <patrick.xu@broconcentric.com>
Date: 星期六, 06 三月 2021 11:35:20 +0800
Subject: [PATCH] 1. 解决软件异常崩溃问题

---
 src/Bro.UI.Model.Winform/UI/CanvasImage.cs |   18 ++++++++++++++++++
 1 files changed, 18 insertions(+), 0 deletions(-)

diff --git a/src/Bro.UI.Model.Winform/UI/CanvasImage.cs b/src/Bro.UI.Model.Winform/UI/CanvasImage.cs
index 978e513..582061d 100644
--- a/src/Bro.UI.Model.Winform/UI/CanvasImage.cs
+++ b/src/Bro.UI.Model.Winform/UI/CanvasImage.cs
@@ -67,8 +67,21 @@
         #endregion
 
         #region 閲嶇粯
+        volatile bool _isInRepaint = false;
+        object _isInRepaintLock = new object();
         protected override void OnPaint(PaintEventArgs e)
         {
+            //if (_isInRepaint)
+            //    return;
+
+            //lock (_isInRepaintLock)
+            //{
+            //    if (_isInRepaint)
+            //        return;
+            //}
+
+            //_isInRepaint = true;
+
             try
             {
                 Rectangle rect = ClientRectangle;
@@ -78,6 +91,9 @@
                 Graphics g = myBuffer.Graphics;
                 g.SmoothingMode = SmoothingMode.HighSpeed;
                 g.PixelOffsetMode = PixelOffsetMode.HighSpeed;
+                g.InterpolationMode = InterpolationMode.Low;
+                g.TextRenderingHint = System.Drawing.Text.TextRenderingHint.SystemDefault;
+                g.CompositingQuality = CompositingQuality.HighSpeed;
                 g.Clear(BackColor);
 
                 g.MultiplyTransform(Matrix);
@@ -173,6 +189,8 @@
             catch (Exception)
             {
             }
+
+            _isInRepaint = false;
         }
 
         private void halfTransparent()

--
Gitblit v1.8.0