Ver código fonte

ComPDFKit.Tool(win) - 移除Stamp注释之前顺时针旋转逻辑

TangJinZhou 3 dias atrás
pai
commit
2116d74654

+ 0 - 4
Demo/Examples/ComPDFKit.Tool/SettingParam/AnnotParam/StampParam.cs

@@ -21,8 +21,6 @@ namespace ComPDFKit.Tool
 		public int Rotation { get; set; }	
 		public CRect SourceRect { get; set; }
 
-        public int Clockwise {  get; set; }
-
         public override bool CopyTo(AnnotParam transfer)
 		{
 			StampParam stampTransfer = transfer as StampParam;
@@ -45,8 +43,6 @@ namespace ComPDFKit.Tool
 			stampTransfer.PageRotation = PageRotation;
             stampTransfer.Rotation = Rotation;
 			stampTransfer.SourceRect = SourceRect;
-            stampTransfer.Clockwise = Clockwise;
-
 			return true;
 		}
 	}

+ 3 - 119
Demo/Examples/ComPDFKit.Tool/UndoManger/AnnotHistory/StampAnnotHistory.cs

@@ -77,7 +77,6 @@ namespace ComPDFKit.Tool.UndoManger
 							}
 
 							stampAnnot.SetStandardStamp(stampText, pdfPage.Rotation);
-                            //stampAnnot.SetRect(currentParam.ClientRect);
                         }
 						break;
 					case C_STAMP_TYPE.TEXT_STAMP:
@@ -100,7 +99,6 @@ namespace ComPDFKit.Tool.UndoManger
 								currentParam.TextStampShape,
 								currentParam.TextStampColor,
 								pdfPage.Rotation);
-                            //stampAnnot.SetRect(currentParam.ClientRect);
                         }
 						break;
 					case C_STAMP_TYPE.IMAGE_STAMP:
@@ -111,7 +109,6 @@ namespace ComPDFKit.Tool.UndoManger
                             PDFHelp.ImageStreamToByte(currentParam.ImageStream, ref imageData, ref imageWidth, ref imageHeight);
 							if (imageData != null && imageWidth > 0 && imageHeight > 0)
 							{
-                                //stampAnnot.SetRect(currentParam.ClientRect);
                                 stampAnnot.SetImageStamp(
                                     imageData,
                                     imageWidth,
@@ -127,9 +124,9 @@ namespace ComPDFKit.Tool.UndoManger
 
                 stampAnnot.SetSourceRect(currentParam.SourceRect);
                 stampAnnot.AnnotationRotator.SetRotation(currentParam.Rotation);
-                stampAnnot.SetTransparency((byte)currentParam.Transparency);
+                stampAnnot.SetTransparency(currentParam.Transparency);
                 string imagePath = string.Empty;
-                if (GetAnnotOpacityImage(stampAnnot, currentParam.Transparency / 255.0, 5, out imagePath) && File.Exists(imagePath))
+                if (currentParam.Transparency <255 && GetAnnotOpacityImage(stampAnnot, currentParam.Transparency / 255.0, 5, out imagePath) && File.Exists(imagePath))
                 {
                     stampAnnot.SetImageStamp(imagePath, string.Empty);
                     File.Delete(imagePath);
@@ -181,31 +178,9 @@ namespace ComPDFKit.Tool.UndoManger
 
 				StampParam updateParam = (isUndo ? PreviousParam : CurrentParam) as StampParam;
 				StampParam checkParam = (isUndo ? CurrentParam : PreviousParam) as StampParam;
-                if (updateParam.Clockwise!=0)
-                {
-                    string imagePath = string.Empty;
-
-                    bool clockwise = updateParam.Clockwise== 1 ? true : false;
-                    if(isUndo)
-                    {
-                        clockwise=!clockwise;
-                    }
-
-                    if (GetAnnotRotateImage(stampAnnot, clockwise, 5, out imagePath) && File.Exists(imagePath))
-                    {
-                        CRect rawRect = stampAnnot.GetRect();
-                        Point centerPos = new Point(rawRect.left + rawRect.width() / 2, rawRect.top + rawRect.height() / 2);
-                        Rect saveRect = new Rect(centerPos.X - rawRect.height() / 2, centerPos.Y - rawRect.width() / 2, rawRect.height(), rawRect.width());
-
-                        stampAnnot.SetRect(new CRect((float)saveRect.Left, (float)saveRect.Bottom, (float)saveRect.Right, (float)saveRect.Top));
-                        stampAnnot.SetImageStamp(imagePath, string.Empty);
-                        File.Delete(imagePath);
-                    }
-                }
-
                 if (updateParam.Transparency != checkParam.Transparency)
 				{
-					stampAnnot.SetTransparency((byte)updateParam.Transparency);
+					stampAnnot.SetTransparency(updateParam.Transparency);
                     string imagePath = string.Empty;
                     if (GetAnnotOpacityImage(stampAnnot, updateParam.Transparency/255.0, 5, out imagePath) && File.Exists(imagePath))
                     {
@@ -258,97 +233,6 @@ namespace ComPDFKit.Tool.UndoManger
 			return false;
 		}
 
-        private bool GetAnnotRotateImage(CPDFStampAnnotation annot, bool clockwise, double zoom, out string imagePath)
-        {
-            imagePath = string.Empty;
-
-            if (annot == null || annot.IsValid() == false)
-            {
-                return false;
-            }
-
-            try
-            {
-                double opacity = annot.GetTransparency() / 255.0;
-                CRect rawRect = annot.GetRect();
-                Rect drawRect = new Rect(0, 0, (int)(rawRect.width() * 96.0 / 72.0 * zoom), (int)(rawRect.height() * 96.0 / 72.0 * zoom));
-
-                byte[] imageData = new byte[(int)drawRect.Width * (int)drawRect.Height * 4];
-                annot.RenderAnnot((int)drawRect.Width, (int)drawRect.Height, imageData);
-
-                int stride = ((int)drawRect.Width) * 4;
-                for (int i = 0; i < (int)(drawRect.Height); i++)
-                {
-                    for (int j = 0; j < (int)(drawRect.Width); j++)
-                    {
-                        byte b = imageData[i * stride + j * 4];
-                        byte g = imageData[i * stride + j * 4 + 1];
-                        byte r = imageData[i * stride + j * 4 + 2];
-                        byte a = imageData[i * stride + j * 4 + 3];
-
-                        if (a == 0 && b == 255 && g == 255 && r == 255)
-                        {
-                            continue;
-                        }
-
-                        if (a == 0 && b == 0 && g == 0 && r == 0)
-                        {
-                            continue;
-                        }
-
-                        imageData[i * stride + j * 4 + 3] = (byte)(opacity * 255);
-                    }
-                }
-
-                WriteableBitmap writeImage = new WriteableBitmap((int)drawRect.Width, (int)drawRect.Height, 96, 96, PixelFormats.Bgra32, null);
-                writeImage.WritePixels(new Int32Rect(0, 0, (int)drawRect.Width, (int)drawRect.Height), imageData, ((int)drawRect.Width) * 4, 0);
-
-                RotateTransform rotateTransform = new RotateTransform();
-                rotateTransform.Angle = clockwise ? 90 : -90;
-                rotateTransform.CenterX = drawRect.Width / 2;
-                rotateTransform.CenterY = drawRect.Height / 2;
-                TranslateTransform translateTransform = new TranslateTransform();
-                if (clockwise == false)
-                {
-                    translateTransform.X = -(drawRect.Width - drawRect.Height) / 2;
-                    translateTransform.Y = -(drawRect.Width - drawRect.Height) / 2;
-                }
-                else
-                {
-                    translateTransform.X = (drawRect.Width - drawRect.Height) / 2;
-                    translateTransform.Y = (drawRect.Width - drawRect.Height) / 2;
-                }
-
-                DrawingVisual drawVisual = new DrawingVisual();
-
-                DrawingContext drawDC = drawVisual.RenderOpen();
-                drawDC.PushTransform(rotateTransform);
-                drawDC.PushTransform(translateTransform);
-                drawDC.DrawImage(writeImage, new Rect(0, 0, writeImage.Width, writeImage.Height));
-                drawDC.Pop();
-                drawDC.Pop();
-                drawDC.Close();
-
-                RenderTargetBitmap renderBitmap = new RenderTargetBitmap((int)drawRect.Height, (int)drawRect.Width, 96, 96, PixelFormats.Pbgra32);
-                renderBitmap.Render(drawVisual);
-                string tempPath = System.IO.Path.Combine(System.IO.Path.GetTempPath(), Guid.NewGuid().ToString());
-                PngBitmapEncoder pngEncoder = new PngBitmapEncoder();
-                using (FileStream fs = File.Create(tempPath))
-                {
-                    pngEncoder.Frames.Add(BitmapFrame.Create(renderBitmap));
-                    pngEncoder.Save(fs);
-                }
-                imagePath = tempPath;
-                return true;
-            }
-            catch (Exception ex)
-            {
-
-            }
-
-            return false;
-        }
-
         private bool GetAnnotOpacityImage(CPDFStampAnnotation annot, double opacity, double zoom, out string imagePath)
         {
             imagePath = string.Empty;