使用剪贴板将图像粘贴到 RichTextBox 中。其中一些旋转 90 度。需要检测/纠正

问题描述 投票:0回答:1

我正在使用 VB.Net 编写程序,并将图像 (JPG) 粘贴到富文本框中。相关代码如下:

For Each Picture As String In ShopAndCraftItem.FileList
   
    Dim img As Image = System.Drawing.Image.FromFile(Directory_Server.ShopAndCraftsPictureFilePath & "\" & Picture)
    Clipboard.SetImage(img)
    Me.rtfReport.AppendText(m_Tab_2)
    Me.rtfReport.Paste()
    Me.rtfReport.AppendText(vbCrLf)

    Me.rtfReport.Font = SC_BoldFont
    Me.rtfReport.AppendText(m_Tab_1 & "Picture".PadRight(ReportPad, ".") & Picture & vbCrLf)

Next`

ShopAndCraftItem.FileList 是我创建的一个类,它包含商店和工艺品的类别(即割草机、径向锯、缝纫机),如果我输入了它,还包含有关每个类别的一些信息,如果我链接了它们,特定目录中的文件名列表。我的程序在类别列表中旋转。如果类别包含有关某个项目的信息,则会报告该信息。如果它有关联文件的列表,它会旋转列表并将它们粘贴到富文本框中,后跟该文件的安全名称。 Directory_Server 是我创建的一个类,用于抽象许多特定于我的程序的目录/文件相关内容。 rtfReport 是 VB 工具箱中的标准 RichTextBox 控件。

我使用的是 Visual Studio 版本 17.8.1。

代码按预期工作,只是有些图像在粘贴时旋转了 90 度。它们不会在磁盘上旋转,并且大多数图片不会发生这种情况。这些照片全部来自小型数码相机。我没有对图片或我的代码做任何特殊或不同的事情。我相信,如果我能确定如何识别何时发生,我就能弄清楚如何适当地轮换它们。更好的是它们根本不旋转。如果我做错了什么(或者可以做得更好),我也无法弄清楚。我做了很多研究,但找不到任何有用的东西。谁能帮我解决这个问题吗?

谢谢! 例如贝尔

我搜索了如何旋转图像。我已经找到了我认为需要做的事情,但我更愿意首先阻止轮换。我发现必须手动完成。我想防止出现问题或识别问题并以编程方式纠正它。我不知道要搜索什么来识别问题,或者在问题发生后识别它。我很感激提供的任何帮助。

vb.net
1个回答
0
投票

这个应对措施是有效的。谢谢。我继续研究,但才开始研究财产项目。这是令人畏惧的。我使用 VB 工作,但 C# 的转换并不困难。我将以下代码添加到我的程序中:

  Private Sub GetImageProperties(ByRef img As System.Drawing.Image)

  Dim Rotate As Integer = 0
  For Each prop In img.PropertyItems

     If prop.Id = 274 OrElse prop.Id = 5029 Then
        Select Case prop.Value(0)
           Case 6 : Rotate = 90
              img.RotateFlip(RotateFlipType.Rotate90FlipNone)

           Case 8 : Rotate = -90
              img.RotateFlip(RotateFlipType.Rotate270FlipNone)

           Case 3 : Rotate = 180

        End Select

        prop.Value(0) = 1
     End If

  Next

结束子

这是基于建议的 C# 片段。 “img”通过引用传递到此,以便我可以进行任何必要的旋转。只需要旋转 90 度。提供的唯一方向是顺时针方向,因此当需要 90 度逆时针方向时我使用 270。我将删除 ROTATE 变量,因为它是原始代码片段的残余部分,但我不需要它。

旋转方法提供了很多我还不理解的细微差别(x、xy、翻转等)。我会自己去追求那些。结果是,这给我带来的收获超出了我的想象。 非常感谢如此快速有效的解决方案。在浪费了很多时间寻找没有帮助的地方,甚至不知道有帮助的地方之后,我来到了这里。

© www.soinside.com 2019 - 2024. All rights reserved.