点整汉字是 m*n 的点
一个二进制串 0100001.....
1是黑点,0 是白点;我想快速在 窗体上或 Pic 中(m*n像素的网格内)绘出来/ 如何画。
我用了一个循环不停的 画点 可以画出来,但速度很慢。当显多个汉字的时候,很慢。我见过一个程序,画 6000个字,比我画20个还快。但我不知道源码请各位给点好的意见,有源代码更好。
其他变成语言的也可以。
up 也给分。

解决方案 »

  1.   

    千万不要用Point或SetPexl等一个个的画点,那会极慢的。很简单,同样对Pic的也用数组处理,处理完再整体绘,若全Pic一次性运算,应该会快上几百倍。
    可用CreateDIBSection建立一个单色图,因为它可以与你那个二进制串正好一一对应,也许都不用处理了。用GetDIBits取数组,处理后SetDIBits放回,再BitBlt绘入Pic。
      

  2.   

    http://blog.csdn.net/wallescai/archive/2004/12/31/235270.aspx
      

  3.   

    picture1.currentx=200
    picture1.currenty=50
    picture1.print "汉字"
      

  4.   

    外加picture1.fontsize=18
    其他FONT参数都可以设置。
      

  5.   

    改进算法,多参考API绘图,应该能提高很大的速度
      

  6.   

    不知道你是什么目的,一般来说在Windows环境下完全没有必要这样做,如果单是为了字体样式
    你可以向一些专业的设计人员要一些Windows字体库就可以了,可能你不是很在意这方面的资料
    其实专业的字体库很多中文的、英文的加起来最少有上万种,基本能够适应现在的设计需要
    当然中文POP的字体另当别论,这方面的可能少一点,不是很全,但已经能满足大部分的POP
    需要了,如果你想自己做字体文件,也可以找一些专门的软件来做,没必要自己开发一个字体
    库自己来调用吧,又不是DOS系统没有中文支持。当然如果你只是兴趣,用 homezj(小吉) 说的方法是可以的,而且速度是VB能做到的最快的方法。
    当然如果有其他第三方的API或控件可能更快。但是你必须先了解VB的高级图形程序设计才能发挥出类似于TextBox的数度效果
    可以提供一些方向供你学习
    先了解绘图设备:
    1、如何创建设备;如何删除设备;如何将绘图对象选入设备。
    2、了解设备场景相关对象,如位图、画笔、刷子、字体等等。
    3、了解位图的概念;如何创建位图;如何删除位图;如何将位图选入设备;
       如何高速处理位图信息。
    以下列出来几个相关的API供你参考:
    CreateCompatibleDC
    CreateBitmap
    SelectObject
    DeleteObject
    DeleteDC
    GetBitmapBits
    SetBitmapBits
    StretchBlt
    DrawText因为详细说的话太多内容,只有提供你一个开发方向,如果你搞懂了以上API函数
    绝对可以做出类似于TextBox显字速度的画字程序。
    注意:在做字模的时候注意文字宽度,你可能会遇到问题。可能在“1”这些文字
    两边会有黑边,你如果一开始就注意的宽度的识别及存储就不会有问题了。
      

  7.   

    我用以上说的方法写了一个程序
    完全可以达到你想要的效果,你的EMail?
      

  8.   

    以前定过,速度确实不敢恭维!当是用的是UCDOS下的一个中文字库
    homezj(小吉) ( ) 信誉:100  2005-01-11 11:43:00  得分: 0  
    ================================================================= 
    可用CreateDIBSection建立一个单色图,因为它可以与你那个二进制串正好一一对应,也许都不用处理了。用GetDIBits取数组,处理后SetDIBits放回,再BitBlt绘入Pic。
      

  9.   

    说慢的人不要以自己的水平否定VB的能力,最起码我上面说的程序一点也不慢
    在12*12的文字打满1024*768的屏幕而言和DrawText函数输出的速度差不了多少。
    这样说的原因肯定是对我说的那几个API不了解,要不就是没有以这种技术做过
    这样的程序,不然就不会这样说了。
    我是看完搂主的这个问题后才有了灵感,想看看VB的速度在这方面到底有多快,
    所以立即写了个程序看看,果然不负期望,速度理想,但是因为只是测试,所以
    我在处理半角字符(如:123abc,.)的时候会有两条黑边,但全角字符和中文都
    是正常显示。造成的原因是半角符号的宽度不是统一的,我也懒得处理,但除此
    之外速度看不出有什么慢。
      

  10.   

    呵呵!SupermanKing(人类)说得对呀!而且也动手实践了,的确这类问题不实践是体会不到速度差距的。
    Point或GetPexl或SetPexl为什么慢,因为它们每取出或改写一个点,就要做取DC、色彩转换、最近色查找、释放DC等一系列对hDC访问的操作,而GetDIBits或GetBitmapBits是一次取出所有点,用数组处理,两种速度差距是巨大的,而且图片越大差距越大,足有几百倍几千倍...
      

  11.   

    用SETPIXEL等方法先来测试文本的输出是否正确,再用DIB方法来提速。
      

  12.   

    picture1.currentx=位置信息
    picture1.currenty=位置信息
    picture1.print "你的汉字"
      

  13.   

    我的邮箱是:[email protected]
    首先谢谢各位的关怀我是做汉字库的。我问了做操作系统的,他们都是将汉字先在内存内画成图,然后一次性拷贝到屏幕上,但我不知道具体函数是什么,如何在内存利先画。SupermanKing(人类) 
    您好
    请问
    CreateCompatibleDC
    CreateBitmap
    SelectObject
    DeleteObject
    DeleteDC
    GetBitmapBits
    SetBitmapBits
    StretchBlt
    DrawText
    这几个函数具体怎么用?