我在做界面的时候需要从一张图里,取指定坐标的一个像素宽100像素高的图片,进度拉伸,用graph.DrawImage(m_pMainDlgImage, rDest, 0, 0, 1, 100, UnitPixel);而出乎意料的是GDI+其实是取了两个像素,不信的话,大伙可以测试一下,加载一张图片,取图片中某个位置的一个像素宽的图片,显示出来,可以不用拉伸,可以直接用graph.DrawImage(m_pMainDlgImage, 10,10, 0, 0, 1, 100, UnitPixel);也是画出了两个像素宽的图片来,
很邪门,请高手指点

解决方案 »

  1.   

    我的MSN是[email protected],有高手对GDI+比较熟的,加我一起交流吧
      

  2.   

    试了一下,确实这样,因此要实现你的功能可以这样做,用GETPIXEL获取你要取的那一列象素,用描点描成一副图,就可以按你的操作完成了
      

  3.   

    会不会是GDI+为了抗锯齿而引起的?
      

  4.   

    breakind(冰舞,把练街舞的精神拿来编程,必有所成.) 按你的方法理论上是可以实现,不过,这种方法效率很低,还不如直接修改图形来得容易~只是我不明白为什么graph.DrawImage会这样
      

  5.   

    按你的方法理论上是可以实现,不过,这种方法效率很低,还不如直接修改图形来得容易~
    ====================
    如果你考虑效率GDI+还是可以实现的,你可以用Bitmap::LockBits获取图像数据指针,然后直接操作
      

  6.   

    按理说GDI+不可能会没考虑到这一点那它这样做的目的是什么
      

  7.   

    Graphics::DrawImage取不了一个像素的话,的确是很麻烦的事,
    比如我现在有个界面,#字图,中间拉伸部分是一个像素的图,我要取到这个区域,然后进行拉伸,结果,Graphics::DrawImage实际取的是两个像素,拉伸出来的东西就变形了,这真叫我难办,用Bitmap::LockBits取图像数据指针,我没试过,不过我现在是PNG图呢
      

  8.   

    我遇到一个与此相关的问题:
    http://topic.csdn.net/u/20080618/14/e6c7906d-d3ca-495a-9526-fc3adbaf85a3.html?seed=18736976621、我把1像素宽的png,DrawImage到50像素宽的Rect里,发现有一半变成透明渐变了;
    2、把2像素宽的png截取1像素宽,然后拉伸,显示正常(右半边不透明渐变),但不知道原因为何;
    3、然而把2像素宽的png直接DrawImage,如同第1条一样会出现拉伸变透明问题。咋回事儿呢?