我用TextOut来显示一个汉字在一个控件上,然后用CDC的GetPixel函数来获取这个控件上汉字显示范围的各个点的颜色,通过颜色不同(黑色为前景,白色为背景)来获取汉字的点阵信息,这个方法是没问题的,可以获取出点阵信息。但是我遇到一个现象,就是本来看起来汉字是完整的,但是用这个方法获取的点阵在某些笔画上确是缺损的,于是我把汉字的尺寸放大,发现达到一定大小以后,这样获取的点阵信息才是完整的,感觉用GetPixel函数来获取CDC上颜色有写误差,那位可以深入的解释一下吗?谢谢!

解决方案 »

  1.   

    To: dirdirdir3 那也就是TextOut显示汉字的坐标精度和CDC的逻辑坐标精度不是统一的吗?
      

  2.   

    因为GetPixel取的是像素点,像素点放大,缩小会损失,矢量图不会损失
      

  3.   

    GetPixel获取的是一个像素点,你用笔画的时候就要考虑笔画的一个点是几个像素,例如原来的一字是由8个像素点组成,而你的笔画一个点是4个像素点的画,你就要隔4个像素点画了。如果按原来的隔一个像素点画的话就变成11个像素点了。这就是为什么某些笔画上确是缺损的原因。
      

  4.   

    TextOut  出来的话,要看你原来的CDC的bitmap设置,如果bitmap只是设置成黑白的话,这样用GetPixel得到的正确!!如果bitmap是24,32位的话这样你的textout出来的话,边上都会有个颜色渐变的过程!小的时候可能没感觉,放大的话,很容易看的到的!!!!!!
      

  5.   

    谢谢大家,五楼的兄弟,我会改一下bitmap的设置,看看,是不是因为设置的颜色深度的问题造成的,谢谢
      

  6.   

    获取字形信息用GetGlyphOutline函数就可以。