C#中动态生成鼠标图案
2007-12-04 16:47
232 查看
CreateIconIndirect()的API函数可以生成Icon图像
Icon和Cursor实际是同一个结构,fIcon字段区别是否为Icon
字段hbmMask和hbmColor指定掩码图和色彩图
当然,更好的是用Bitmap.MakeTransparent()处理一下透明
这样掩码图和色彩图都指向处理后的位图
public double DecodeMoneyCn(string AText)
...{
AText = AText.Replace("亿亿", "兆");
AText = AText.Replace("万万", "亿");
AText = AText.Replace("点", "元");
AText = AText.Replace("块", "元");
AText = AText.Replace("毛", "角");
double vResult = 0;
double vNumber = 0; // 当前数字
double vTemp = 0;
int vDecimal = 0; // 是否出现小数点
foreach (char vChar in AText)
...{
int i = "零一二三四五六七八九".IndexOf(vChar);
if (i < 0) i = "洞幺两三四五六拐八勾".IndexOf(vChar);
if (i < 0) i = "零壹贰叁肆伍陆柒捌玖".IndexOf(vChar);
if (i > 0)
...{
vNumber = i;
if (vDecimal > 0)
...{
vResult += vNumber * Math.Pow(10, -vDecimal);
vDecimal++;
vNumber = 0;
}
}
else
...{
i = "元十百千万亿".IndexOf(vChar);
if (i < 0) i = "整拾佰仟万亿兆".IndexOf(vChar);
if (i == 5) i = 8;
if (i == 6) i = 12;
if (i > 0)
...{
if (i >= 4)
...{
vTemp += vNumber;
if (vTemp == 0) vTemp = 1;
vResult += vTemp * Math.Pow(10, i);
vTemp = 0;
}
else vTemp += vNumber * Math.Pow(10, i);
}
else
...{
i = "元角分".IndexOf(vChar);
if (i > 0)
...{
vTemp += vNumber;
vResult += vTemp * Math.Pow(10, -i);
vTemp = 0;
}
else if (i == 0)
...{
vTemp += vNumber;
vResult += vTemp;
vDecimal = 1;
vTemp = 0;
}
}
vNumber = 0;
}
}
return vResult + vTemp + vNumber;
}
private void button1_Click(object sender, EventArgs e)
...{
string[] vTestText = ...{
"十二点五六",
"一亿零一万零五",
"四万万",
"九十八亿七千六百五十四万三千二百一十",
"五元一角四分", "壹佰元整",
"三千五百万",
"九块二毛"};
foreach (string vText in vTestText)
...{
Console.WriteLine("DecodeMoneyCn("{0}")={1}", vText,
DecodeMoneyCn(vText));
}
//输出
//DecodeMoneyCn("十二点五六")=2.56
//DecodeMoneyCn("一亿零一万零五")=100010005
//DecodeMoneyCn("四万万")=400000000
//DecodeMoneyCn("九十八亿七千六百五十四万三千二百一十")=9876543210
//DecodeMoneyCn("五元一角四分")=5.14
//DecodeMoneyCn("壹佰元整")=100
//DecodeMoneyCn("三千五百万")=35000000
//DecodeMoneyCn("九块二毛")=9.2
//DecodeMoneyCn("一兆")=1000000000000
}
Icon和Cursor实际是同一个结构,fIcon字段区别是否为Icon
字段hbmMask和hbmColor指定掩码图和色彩图
当然,更好的是用Bitmap.MakeTransparent()处理一下透明
这样掩码图和色彩图都指向处理后的位图
public double DecodeMoneyCn(string AText)
...{
AText = AText.Replace("亿亿", "兆");
AText = AText.Replace("万万", "亿");
AText = AText.Replace("点", "元");
AText = AText.Replace("块", "元");
AText = AText.Replace("毛", "角");
double vResult = 0;
double vNumber = 0; // 当前数字
double vTemp = 0;
int vDecimal = 0; // 是否出现小数点
foreach (char vChar in AText)
...{
int i = "零一二三四五六七八九".IndexOf(vChar);
if (i < 0) i = "洞幺两三四五六拐八勾".IndexOf(vChar);
if (i < 0) i = "零壹贰叁肆伍陆柒捌玖".IndexOf(vChar);
if (i > 0)
...{
vNumber = i;
if (vDecimal > 0)
...{
vResult += vNumber * Math.Pow(10, -vDecimal);
vDecimal++;
vNumber = 0;
}
}
else
...{
i = "元十百千万亿".IndexOf(vChar);
if (i < 0) i = "整拾佰仟万亿兆".IndexOf(vChar);
if (i == 5) i = 8;
if (i == 6) i = 12;
if (i > 0)
...{
if (i >= 4)
...{
vTemp += vNumber;
if (vTemp == 0) vTemp = 1;
vResult += vTemp * Math.Pow(10, i);
vTemp = 0;
}
else vTemp += vNumber * Math.Pow(10, i);
}
else
...{
i = "元角分".IndexOf(vChar);
if (i > 0)
...{
vTemp += vNumber;
vResult += vTemp * Math.Pow(10, -i);
vTemp = 0;
}
else if (i == 0)
...{
vTemp += vNumber;
vResult += vTemp;
vDecimal = 1;
vTemp = 0;
}
}
vNumber = 0;
}
}
return vResult + vTemp + vNumber;
}
private void button1_Click(object sender, EventArgs e)
...{
string[] vTestText = ...{
"十二点五六",
"一亿零一万零五",
"四万万",
"九十八亿七千六百五十四万三千二百一十",
"五元一角四分", "壹佰元整",
"三千五百万",
"九块二毛"};
foreach (string vText in vTestText)
...{
Console.WriteLine("DecodeMoneyCn("{0}")={1}", vText,
DecodeMoneyCn(vText));
}
//输出
//DecodeMoneyCn("十二点五六")=2.56
//DecodeMoneyCn("一亿零一万零五")=100010005
//DecodeMoneyCn("四万万")=400000000
//DecodeMoneyCn("九十八亿七千六百五十四万三千二百一十")=9876543210
//DecodeMoneyCn("五元一角四分")=5.14
//DecodeMoneyCn("壹佰元整")=100
//DecodeMoneyCn("三千五百万")=35000000
//DecodeMoneyCn("九块二毛")=9.2
//DecodeMoneyCn("一兆")=1000000000000
}
相关文章推荐
- 动态生成鼠标指针--可以利用已有的图片生成鼠标指针--C#代码
- 秒懂C#通过Emit动态生成代码 C#使用Emit构造拦截器动态代理类
- C#动态生成”Word文档“并填充数据
- c# 矢量图标动态生成库
- 用扫雷游戏说明c#按钮动态绑定鼠标事件
- 现在有动态生成table若干行,每行里会有一个button.当鼠标点击其中一个button时.如何让程序知道是点在第几行的button上
- 分享c#动态生成文字图片解决方案
- 转载:C#动态生成gif
- C#实现动态生成表格的方法
- TreeView无刷新动态生成树[C# Asp.net 2.0]
- C#: 动态生成静态页面的类
- C#中自定义方法,动态编译,生成dll文件
- C# WinForm 用MenuStrip动态生成菜单并动态加载事件
- silverlight3 datagrid c#中动态生成模板列(日期格式)使用IValueConvert对绑定数据的格式化操作
- ASP.NET动态生成静态页面(C#)
- C#也能动态生成Word文档并填充数据
- C#动态生成树型结构的Web程序设计
- 用C# 动态生成含有报表图表的word文件
- C#也能动态生成Word文档并填充数据
- C#中利用反射,动态生成类的实例