
/// <summary>
/// 获取中的GPS坐标点
/// </summary>
/// <param name="p_路径">路径</param>
/// <returns>返回坐标纬度+经度用"+"分割 取数组中第0和1个位置的值</returns>
public String fnGPS坐标(String p_路径)
{
String s_GPS坐标 = "";
//载入
Image objImage = ImageFromFile(p_路径);
//取得所有的属性(以PropertyId做排序)
var propertyItems = objImagePropertyItemsOrderBy(x => xId);
//暂定纬度N(北纬)
char chrGPSLatitudeRef = 'N';
//暂定经度为E(东经)
char chrGPSLongitudeRef = 'E';
foreach (PropertyItem objItem in propertyItems)
{
//只取Id范围为0x0000到0x001e
if (objItemId >= 0x0000 && objItemId <= 0x001e)
{
objItemId = 0x0002;
switch (objItemId)
{
case 0x0000:
var query = from tmpb in objItemValue select tmpbToString();
string sreVersion = stringJoin("", queryToArray());
break;
case 0x0001:
chrGPSLatitudeRef = BitConverterToChar(objItemValue, 0);
break;
case 0x0002:
if (objItemValueLength == 24)
{
//degrees(将byte[0]~byte[3]转成uint, 除以byte[4]~byte[7]转成的uint)
double d = BitConverterToUInt32(objItemValue, 0) 10d / BitConverterToUInt32(objItemValue, 4);
//minutes(将byte[8]~byte[11]转成uint, 除以byte[12]~byte[15]转成的uint)
double m = BitConverterToUInt32(objItemValue, 8) 10d / BitConverterToUInt32(objItemValue, 12);
//seconds(将byte[16]~byte[19]转成uint, 除以byte[20]~byte[23]转成的uint)
double s = BitConverterToUInt32(objItemValue, 16) 10d / BitConverterToUInt32(objItemValue, 20);
//计算经纬度数值, 如果是南纬, 要乘上(-1)
double dblGPSLatitude = (((s / 60 + m) / 60) + d) (chrGPSLatitudeRefEquals('N') 1 : -1);
string strLatitude = stringFormat("{0:#} deg {1:#}' {2:#00}\" {3}", d
, m, s, chrGPSLatitudeRef);
//纬度+经度
s_GPS坐标 += dblGPSLatitude + "+";
}
break;
case 0x0003:
//透过BitConverter, 将Value转成Char('E' / 'W')
//此值在后续的Longitude计算上会用到
chrGPSLongitudeRef = BitConverterToChar(objItemValue, 0);
break;
case 0x0004:
if (objItemValueLength == 24)
{
//degrees(将byte[0]~byte[3]转成uint, 除以byte[4]~byte[7]转成的uint)
double d = BitConverterToUInt32(objItemValue, 0) 10d / BitConverterToUInt32(objItemValue, 4);
//minutes(将byte[8]~byte[11]转成uint, 除以byte[12]~byte[15]转成的uint)
double m = BitConverterToUInt32(objItemValue, 8) 10d / BitConverterToUInt32(objItemValue, 12);
//seconds(将byte[16]~byte[19]转成uint, 除以byte[20]~byte[23]转成的uint)
double s = BitConverterToUInt32(objItemValue, 16) 10d / BitConverterToUInt32(objItemValue, 20);
//计算精度的数值, 如果是西经, 要乘上(-1)
double dblGPSLongitude = (((s / 60 + m) / 60) + d) (chrGPSLongitudeRefEquals('E') 1 : -1);
}
break;
case 0x0005:
string strAltitude = BitConverterToBoolean(objItemValue, 0) "0" : "1";
break;
case 0x0006:
if (objItemValueLength == 8)
{
//将byte[0]~byte[3]转成uint, 除以byte[4]~byte[7]转成的uint
double dblAltitude = BitConverterToUInt32(objItemValue, 0) 10d / BitConverterToUInt32(objItemValue, 4);
}
break;
}
}
}
return s_GPS坐标;
}
#endregion
一般设置margin的值,如果要是放在Canvas中,可以利用CanvasTop等来改变距离Canvas各个角的位置。
WPF(Windows Presentation Foundation)是微软推出的基于Windows Vista的用户界面框架,属于NET Framework 30的一部分。它提供了统一的编程模型、语言和框架,真正做到了分离界面设计人员与开发人员的工作;同时它提供了全新的多媒体交互用户图形界面。
1、首先打开wpf系统并进入主界面。
2、其次对UIElement重写OnRender方法进行渲染的内容。
3、最后点击tackPanel1相对于grid的坐标并进行输入即可。
以上就是关于C# 如何获取照片中Exif信息里GPS信息与经纬度数全部的内容,包括:C# 如何获取照片中Exif信息里GPS信息与经纬度数、wpf中如何控制图片的位置、wpf代码中,怎么样输出stackpanel的坐标等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)