CPoint和CSize的浮点数版本

本文旨在解决MFC中CPoint和CSize类未提供浮点数支持的问题,介绍了一种浮点数版本的实现,包括类的结构、源码及应用示例,方便进行非像素单位的图像处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、目的

MFC提供的CPoint和CSize很好用,实现了各种构造函数和运算符,但没提供浮点数版本,这对于一些不以像素为单元的图像处理带来了很大的不便,在此,提供这两个类的浮点数版本。

二、代码实现

1、 代码结构:基本与CPoint和CSize一致,成员名称也一样,重载运算符,提供加减乘除法操作;

2、 源码

#pragma once
/************************************************* 
Copyright:	mlizhi.com 
Author:		Juncheng Lin
Date:		2018-01-05 
Description:CPoint和CSize的浮点数版本 
**************************************************/  
#include <ocidl.h>

template<typename T>
inline int Round(T f)
{
	return f < 0? f - 0.5f: f + 0.5f;
}
/**
类名:	CPointF
功能:	提供浮点坐标点的与CPoint相似的运算符操作
*/
class CPointF :
	public tagPOINTF
{
public:
	CPointF(FLOAT _x = 0, FLOAT _y = 0)
	{
		x = _x;
		y = _y;
	}
	CPointF(const POINTF &pt)
	{
		x = pt.x;
		y = pt.y;
	}
	CPointF(const POINT &pt);
	~CPointF(void);
	operator POINT () const; 
//单目运算符的宏,参数opr为操作符
#define O
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值