none
如何获取富文本框中的图片? RRS feed

  • 常规讨论

  • 如题,就像QQ截屏一样图片已经加到富文本框,中间有文字等其他东西,我如何获取到富文本框中的所有图片(怎么判断就是图片)并且保存到程序中的一个Image变量。

    还有谁对QQ的传自定义图片的原理懂的,介绍下呀。我现在传自定义图片是将图片转成字符串加<Image></Image>标记这样传送的,接收方收到信息搜索<Image>获取中间的字符串重新转成图片这样的,烦。
    2010年1月5日 7:44

全部回复

  • 直接获取比较困难

    富文本框中存放的是RTF格式,图片也是以资源方式存放的,
    你可以先把rtf格式转换为word,再把WORD转换为HTML,
    从HTML中获取图片
    努力+方法=成功
    2010年1月5日 10:05
  • 你好!
         也可以通过NetworkStream类直接传递二进制数据(byte数组)!
    周雪峰
    2010年1月5日 10:18
    版主
  • 也可以通过NetworkStream类直接传递二进制数据(byte数组)??

    具体点呢。

    还有问题是:   aaa表情图片aaa截屏图片bbb。
    还有的是我怎么判断是表情图片还是截屏图片呢?判断完后,我怎么得到上面(截屏图片)的image或其他总之能够还原成图片的东西。

    顺便问下,QQ是怎么实现这个效果的? 我知道表情图片是实际是传的是一个 /微笑  这样的字符串,那截屏图片,或剪贴板粘贴的图片呢???
    2010年1月8日 4:11
  • 请各位高手前来指点呀
    2010年1月8日 5:47
  • 快来人看呀
    2010年1月12日 4:56
  • 你可以把图片写入byte数组中,然后用HttpListener类来传递:
    // This example requires the System and System.Net namespaces.
    public static void SimpleListenerExample(string[] prefixes)
    {
        if (!HttpListener.IsSupported)
        {
            Console.WriteLine ("Windows XP SP2 or Server 2003 is required to use the HttpListener class.");
            return;
        }
        // URI prefixes are required,
        // for example "http://contoso.com:8080/index/".
        if (prefixes == null || prefixes.Length == 0)
          throw new ArgumentException("prefixes");
        
        // Create a listener.
        HttpListener listener = new HttpListener();
        // Add the prefixes.
        foreach (string s in prefixes)
        {
            listener.Prefixes.Add(s);
        }
        listener.Start();
        Console.WriteLine("Listening...");
        // Note: The GetContext method blocks while waiting for a request. 
        HttpListenerContext context = listener.GetContext();
        HttpListenerRequest request = context.Request;
        // Obtain a response object.
        HttpListenerResponse response = context.Response;
        // Construct a response.
        string responseString = "<HTML><BODY> Hello world!</BODY></HTML>";
        byte[] buffer = System.Text.Encoding.UTF8.GetBytes(responseString);
        // Get a response stream and write the response to it.
        response.ContentLength64 = buffer.Length;
        System.IO.Stream output = response.OutputStream;
        output.Write(buffer,0,buffer.Length);
        // You must close the output stream.
        output.Close();
        listener.Stop();
    }

    周雪峰
    2010年1月12日 5:12
    版主
  • 你好!

    QQ 是怎么做的,我不太清楚。我们以前做的聊天界面是用 HTML 做的,这样更好控制与展示。Winform 中结合使用 Webbrower 控件就能方便的实现。至于字符替换为 img 都是简单的 html 应用,比如你预先准备好了一些图片,当发现输入中包含  "/微笑" 就将它替换为 <img src='图片地址'/>

    知识改变命运,奋斗成就人生!
    2010年1月12日 5:44
    版主
  • 哥,我现在的问题是取不了图片呀,取到图片我弄成2进制已经实现了呀。

    我现在的问题是:我先把文字图片一起加到richtextbox里面,然后我点发送按钮,后台要重新从richtextbox中把文字图片取下来,文字部分用richtextboxv.text可以取到的(他自动把图片部分省掉了),可是这里图片不知道怎么取。(最好有比较好的是否截屏图片判断方法,因为有表情图片的)
    2010年1月12日 5:47
  • 直接把文字和图片以RTF格式存贮,
        richTextBox1.Rtf
    努力+方法=成功
    2010年1月12日 5:52