0

I Started with this C# Question

I'm trying to Display a bmp image inside a rtf Box for a Bot program I'm making. This function is supposed to convert a bitmap to rtf code whis is inserted to another rtf formatter srtring with additional text. Kind of like Smilies being used in a chat program.

For some reason the output of this function gets rejected by the RTF Box and Vanishes completly. I'm not sure if it the way I'm converting the bmp to a Binary string or if its tied in with the header tags

lb.SelectedRtf = FormatText(build.ToString, newColor)

 'returns the RTF string representation of our picture
    Public Shared Function PictureToRTF(ByVal Bmp As Bitmap) As String

    'Create a new bitmap
    Dim BmpNew As New Bitmap(Bmp.Width, Bmp.Height, Imaging.PixelFormat.Format24bppRgb)
    Dim gr = Graphics.FromImage(BmpNew)
    gr.DrawimageUnscaled(Bmp, 0, 0)
    gr.dispose()

    Dim stream As New MemoryStream()
    BmpNew.Save(stream, System.Drawing.Imaging.ImageFormat.Bmp)

        Dim bytes As Byte() = stream.ToArray()

        Dim str As String = BitConverter.ToString(bytes, 0).Replace("-", String.Empty)

        'header to string we want to insert
        Using g As Graphics = Main.CreateGraphics()
            xDpi = g.DpiX
            yDpi = g.DpiY
        End Using

        Dim _rtf As New StringBuilder()

        ' Calculate the current width of the image in (0.01)mm
        Dim picw As Integer = CInt(Math.Round((Bmp.Width / xDpi) * HMM_PER_INCH))

        ' Calculate the current height of the image in (0.01)mm
        Dim pich As Integer = CInt(Math.Round((Bmp.Height / yDpi) * HMM_PER_INCH))

        ' Calculate the target width of the image in twips
        Dim picwgoal As Integer = CInt(Math.Round((Bmp.Width / xDpi) * TWIPS_PER_INCH))

        ' Calculate the target height of the image in twips
        Dim pichgoal As Integer = CInt(Math.Round((Bmp.Height / yDpi) * TWIPS_PER_INCH))

        ' Append values to RTF string
        _rtf.Append("{\pict\wbitmap0")
        _rtf.Append("\picw")
        _rtf.Append(Bmp.Width.ToString)
        '  _rtf.Append(picw.ToString)
        _rtf.Append("\pich")
        _rtf.Append(Bmp.Height.ToString)
        ' _rtf.Append(pich.ToString)
        _rtf.Append("\wbmbitspixel24\wbmplanes1")
        _rtf.Append("\wbmwidthbytes40")
        _rtf.Append("\picwgoal")
        _rtf.Append(picwgoal.ToString)
        _rtf.Append("\pichgoal")
        _rtf.Append(pichgoal.ToString)
        _rtf.Append("\bin ")

        _rtf.Append(str.ToLower & "}")
        Return _rtf.ToString
    End Function

Public Function FormatText(ByVal data As String, ByVal newColor As fColorEnum) As String
    data = System.Net.WebUtility.HtmlDecode(data)
    data = data.Replace("|", " ")
    Dim reg As New Regex("\$(.[0-9]+)\$")
    If reg.IsMatch(data) Then
        Dim meep As String = Regex.Match(data, "\$(.[0-9]+)\$").Groups(1).ToString
        Dim idx As Integer = Convert.ToInt32(meep)
        Dim img As String = Fox2RTF(idx)

        If img IsNot Nothing Then data = Regex.Replace(data, "\$(.[0-9]+)\$", img)
    End If
    Dim myColor As System.Drawing.Color = fColor(newColor)
    Dim ColorString = "{\colortbl ;"
    ColorString += "\red" & myColor.R & "\green" & myColor.G & "\blue" & myColor.B & ";}"
    Dim FontSize As Integer = cMain.ApFont.Size
    Dim FontFace As String = cMain.ApFont.Name
    FontSize *= 2
    Dim test As String = "{\rtf1\ansi\ansicpg1252\deff0\deflang1033" & ColorString & "{\fonttbl{\f0\fcharset0 " & FontFace & ";}}\viewkind4\uc1\fs" & FontSize.ToString & data & "\par}"
    Return "{\rtf1\ansi\ansicpg1252\deff0\deflang1033" & ColorString & "{\fonttbl{\f0\fcharset0 " & FontFace & ";}}\viewkind4\uc1\fs" & FontSize.ToString & data & "\cf0 \par}"
End Function
Private Function Fox2RTF(ByRef Img As Integer) As String
    Dim shape As New FurcadiaShapes(Paths.GetDefaultPatchPath() & "system.fsh")
    Dim anims As Bitmap() = Helper.ToBitmapArray(shape)
    ' pic.Image = anims(Img)

    Return PictureToRTF.PictureToRTF(anims(Img))

End Function
Community
  • 1
  • 1
Gerolkae
  • 11
  • 5

1 Answers1

0

Never found the Soultion I was hoping for with this.. But I did find a work around http://www.codeproject.com/Articles/30902/RichText-Builder-StringBuilder-for-RTF

Gerolkae
  • 11
  • 5