WPF自定义控件——使用Win32控件
1 [COS(a) , –SIN(a)]
y1 [COS(a) , SIN(a)] z [ 1 , 2 ] 为了变化方便所以还加 了一列,这样的话上面的平移我们还可以这样得到 [1,0,0] * x1 [COS(a) , –SIN(a) ,0] [0,1,0] * y1 [COS(a) , SIN(a) ,0] [1,2,1] * z [0 , 0 ,1] 注意:矩阵的乘法中 A*B 不等于 B * A 。 http://zh.wikipedia.org/w/index.php?title=变换矩阵&variant=zh- cn#.E4.BB.BF.E5.B0.84.E5.8F.98.E6.8D.A2 http://zh.wikipedia.org/w/index.php?title=矩 阵&variant=zh-cn 从以上你是感觉Matrix就是一个点的变化么,把图像中的每个点都逆时针旋转下,图像就斜了,或许 你可以模拟出WPF中的RotateTransform、ScaleTransform、SkewTransform、TranslateTransform 这 些类的效果。 对于WPF中当前的Matrix可以这样得到 Matrix m = PresentationSource.FromVisual(this).CompositionTarget.TransformToDevice; 四.消息通知 知道了这些我们就可以把Matrix作为参数发送个win32自定义画图让其也一起旋转,变化.对于非 托管控件我们通常使用SendMessage来传递消息,这里用winform来做例子。 这里我们先来看下 http://hi.baidu.com/cyap/blog/item/9aebca0f5e4c612c6159f300.html这个网页对p\invoke中发送消息 的一些使用说明;其中我们还要注意SendMessage中的第四个参数如果传递的是int,struct,string,byte 类型就相对容易些;在Marshal中便有对应的函数读取 Marshal.PtrToStructure,Marshal.PtrToStringAuto处理,假如传递是类的话,先要序列化,转化成2进 制之后,因为从指针中并不能知道到这个指针所申请的空间大小,所以需要一个结构体来保存这个2进制 数据的指针,以及他的长度。
当然如果你感觉比较麻烦的话,也可以把这两个值分别放在WParam和LParam传送(这个 做法不推荐)。 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |