How to Display a Bmp in a RTF control in VB.net

Posted by Gerolkae on Stack Overflow See other posts from Stack Overflow or by Gerolkae
Published on 2012-04-12T11:24:49Z Indexed on 2012/04/12 11:29 UTC
Read the original article Hit count: 369

Filed under:
|
|

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

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

        Dim stream As New MemoryStream()
        Bmp.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

© Stack Overflow or respective owner

Related posts about vb.net

Related posts about rtf