b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

bitblt_bitblt中源设备的像素_bitblt 透明(2)

电脑杂谈  发布时间:2017-01-20 00:03:24  来源:网络整理

补充:

1,STATIC控件我先用蓝色画刷涂了底色,所以执行效果中下半段是蓝色的

2,从内存DC拷贝到视图DC的命令如下:

m_pDC->BitBlt(0,0,rect.right,rect.bottom,&m_memDC,0,0,SRCCOPY);

第二个参数是目标DC的Y坐标,个人感觉这里应该是0,因为我并没有改变逻辑坐标呵,当然应该从Y=0的位置开始覆盖呵,但是实际效果貌似并非如此,这是为什么呢?

3,为什么内存DC里负数部分没有被画出来?

数学坐标到屏幕坐标的转换

垂直坐标反相,然后再把原点移动到你要绘图的坐标处.(x1,y1)

(x,y)--(x+x1,-y+y1)

但是,按这个移动,会发现坐标系是图是反的,相当于原来的对于x轴镜像.

想要坐标系不同,而显示又符合,那么实际坐标系变换就简单了,

就相当于把第一,四像限的图下移到二,三像限.

//绘制坐标X轴.
		POINT ps = {100,200};
		dc.MoveTo(ps);
		ps.x = 500;
		ps.y = 200;
		dc.LineTo(ps);

		for(double i=0; i<360; i+=1.0f)
		{
			int y = sin(i*3.14159f/180.0f)*100.0f; //把0-1扩展到0-100;
			int x = (int)i;
			dc.SetPixel(x+100, -y+200, RGB(255,0,0));  //原点移动到屏幕 100,200处
		}

数学坐标到屏幕坐标的转换

垂直坐标反相,然后再把原点移动到你要绘图的坐标处.(x1,y1)

(x,y)--(x+x1,-y+y1)

但是,按这个移动,会发现坐标系是图是反的,相当于原来的对于x轴镜像.

想要坐标系不同,而显示又符合,那么实际坐标系变换就简单了,

就相当于把第一,四像限的图下移到二,三像限.

//绘制坐标X轴.
		POINT ps = {100,200};
		dc.MoveTo(ps);
		ps.x = 500;
		ps.y = 200;
		dc.LineTo(ps);

		for(double i=0; i<360; i+=1.0f)
		{
			int y = sin(i*3.14159f/180.0f)*100.0f; //把0-1扩展到0-100;
			int x = (int)i;
			dc.SetPixel(x+100, -y+200, RGB(255,0,0));  //原点移动到屏幕 100,200处
		}

谢谢,当然我也可以单纯的先把我的源数据做一个坐标系转换,然后目标DC和内存DC不做任何变换直接画图,这样也没问题,可是我更想知道GDI下的那几个坐标变换函数的用法。。bitblt

谢谢各位回答,做了N次实验,终于找到点规律了,总结如下,如有错误,烦请指正

1,pDC做了坐标变换以后,memDC也要做相应的坐标变换(为了保持一致)


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-27469-2.html

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    • 捷斯斯
      捷斯斯

      2的不会卡

    • 卫子君
      卫子君

      俺们那的人大部分谈生意都很实诚

    热点图片
    拼命载入中...