小明 发表于 2023-4-13 17:21:39

关于fpSpread水印

使用下列代码添加水印,不冻结列则显示3列水印,冻结10列则水印直接飞到右侧了,就显示一半,为什么,怎样解决?


      private static void fpSpread_PrintBackground(object sender, FarPoint.Win.Spread.PrintBackgroundEventArgs e)
      {
            try
            {
                var text = $"2023 1111 为什么";
                var imgSize = e.SheetRectangle.Width / 3;
                var fontSize = 14;
                var font = new System.Drawing.Font("宋体", fontSize, System.Drawing.FontStyle.Bold);
                using (var img = new System.Drawing.Bitmap(imgSize, imgSize))
                {
                  using (var g = System.Drawing.Graphics.FromImage(img))
                  {
                        g.Clear(System.Drawing.Color.White);
                        //将原点移动 到图片中点
                        g.TranslateTransform(fontSize, imgSize / 2);
                        //以原点为中心 转 -45度
                        g.RotateTransform(-45);
                        g.DrawString(text, font, System.Drawing.Brushes.LightGray, 0, 0);
                        g.Save();
                  }
                  var pic = new FarPoint.Win.Picture(img, FarPoint.Win.RenderStyle.Tile);
                  pic.AlignHorz = FarPoint.Win.HorizontalAlignment.Distributed;
                  pic.AlignVert = FarPoint.Win.VerticalAlignment.Distributed;
                  pic.Paint(e.Graphics, e.SheetRectangle);
                }
            }
            catch (Exception ex)
            {
               
            }
      }

小明 发表于 2023-4-13 17:32:26

发现问题出在 e.SheetRectangle ,冻结前后定位不一样。

小明 发表于 2023-4-13 17:38:29

小明 发表于 2023-4-13 17:32
发现问题出在 e.SheetRectangle ,冻结前后定位不一样。

。。。根 e.SheetRectangle 好像无关,冻结前后指定同样的Rectangle,也出这个问题。

Richard.Ma 发表于 2023-4-13 19:24:31

请上传一个重现问题的demo,我帮你分析一下原因,单纯代码不好找问题
页: [1]
查看完整版本: 关于fpSpread水印