17 个解决方案
#1
SetMapMode 这个函数不知道有没有用?如果你用vc++~
对坐标的转换我概念也很模糊。
对坐标的转换我概念也很模糊。
#2
正愁这事了...WORD可以多页,不知道你是不是想得到,相对页首左上角的坐标,没想到解决办法.
关注中!
关注中!
#3
想到了,但是如果我页就不好算了
#4
呵呵,ME也是一样的问题,关注中
#5
ding
#6
up
#7
ttt2 (家合万事兴) 兄弟你解决了吗?我也在愁这个事情呀,你如何解决的?
#8
提示1:WORD中有一个getpoint的方法
提示2:WORD中有方法可以获得页边距
提示3:通过以上方法还是没有能实现
提示2:WORD中有方法可以获得页边距
提示3:通过以上方法还是没有能实现
#9
提示4 我能实现
#10
那就告诉人家,来这儿就是信任大家
哈哈
ding
哈哈
ding
#11
up
#12
www.http://www.utcsoft.com/pages/family050.htm
#13
学习中
#14
关注手写功能
#15
ttt2 (家合万事兴) 我觉得你很难直接去得到,而应该逆向思考,即先将一个WORD元素转换为屏幕坐标,然后通过屏幕坐标和WORD坐标换算比例来得到一个映射公式然后代入屏幕坐标求出WORD坐标.听起来比较麻烦,但实际上不麻烦的,我已经实现,但并不是这个转换,是效果类似的东西.我目前也在找直接转换的方法,兄弟找到了告诉我下,谢了
shps=doc.GetShapes();
app.SetScreenUpdating(FALSE);
// shp=shps.AddPicture("C:\\1.bmp",vFalse,vTrue,&COleVariant((long)0),&COleVariant((long)0),&COleVariant((long)144),&COleVariant((long)144),vOpt);//144=192/4*3
shp=shps.AddOLEControl(vControlName,&COleVariant((long)0),&COleVariant((long)0),&COleVariant((long)144),&COleVariant((long)144),vOpt);//144=192/4*3
// shp.SetName("YJTZ");
float Zoom;
win=doc.GetActiveWindow();
vie=win.GetView();
zoo=vie.GetZoom();
Zoom=zoo.GetPercentage();
Zoom/=100;
// shp.IncrementTop(ph*a.intVal+ph/2);
/* var.lVal = 1;
int num=ishps.GetCount();
for (int i=1;i<=num;i++)
{
ishp=ishps.Item(i);
float f=ishp.GetHeight();
if(f==48.75)
break;
}*/
// ishp=ishps.Item(ishps.GetCount());
// shp=ishp.ConvertToShape();
win.GetPoint(&ScrPosX,&ScrPosY,&ScrWidth,&ScrPosHeight,shp);
shp.IncrementLeft((CurScrPoint.x-ScrPosX)/1.333/Zoom-50);
shp.IncrementTop((CurScrPoint.y-ScrPosY)/1.333/Zoom-50);
shp.SetLockAnchor(0);
shp.ZOrder(5);
war=shp.GetWrapFormat();
war.SetAllowOverlap(-1);
war.SetSide(0);
war.SetType(3);
app.SetScreenUpdating(TRUE);
以上是我的代码,效果类似.
shps=doc.GetShapes();
app.SetScreenUpdating(FALSE);
// shp=shps.AddPicture("C:\\1.bmp",vFalse,vTrue,&COleVariant((long)0),&COleVariant((long)0),&COleVariant((long)144),&COleVariant((long)144),vOpt);//144=192/4*3
shp=shps.AddOLEControl(vControlName,&COleVariant((long)0),&COleVariant((long)0),&COleVariant((long)144),&COleVariant((long)144),vOpt);//144=192/4*3
// shp.SetName("YJTZ");
float Zoom;
win=doc.GetActiveWindow();
vie=win.GetView();
zoo=vie.GetZoom();
Zoom=zoo.GetPercentage();
Zoom/=100;
// shp.IncrementTop(ph*a.intVal+ph/2);
/* var.lVal = 1;
int num=ishps.GetCount();
for (int i=1;i<=num;i++)
{
ishp=ishps.Item(i);
float f=ishp.GetHeight();
if(f==48.75)
break;
}*/
// ishp=ishps.Item(ishps.GetCount());
// shp=ishp.ConvertToShape();
win.GetPoint(&ScrPosX,&ScrPosY,&ScrWidth,&ScrPosHeight,shp);
shp.IncrementLeft((CurScrPoint.x-ScrPosX)/1.333/Zoom-50);
shp.IncrementTop((CurScrPoint.y-ScrPosY)/1.333/Zoom-50);
shp.SetLockAnchor(0);
shp.ZOrder(5);
war=shp.GetWrapFormat();
war.SetAllowOverlap(-1);
war.SetSide(0);
war.SetType(3);
app.SetScreenUpdating(TRUE);
以上是我的代码,效果类似.
#16
关注手写签名,大家有什么方案,怎么实现的讨论一下
#17
谢谢 rovoboy(魂之猎人) 定位问题已经解决,定位非常准确
#1
SetMapMode 这个函数不知道有没有用?如果你用vc++~
对坐标的转换我概念也很模糊。
对坐标的转换我概念也很模糊。
#2
正愁这事了...WORD可以多页,不知道你是不是想得到,相对页首左上角的坐标,没想到解决办法.
关注中!
关注中!
#3
想到了,但是如果我页就不好算了
#4
呵呵,ME也是一样的问题,关注中
#5
ding
#6
up
#7
ttt2 (家合万事兴) 兄弟你解决了吗?我也在愁这个事情呀,你如何解决的?
#8
提示1:WORD中有一个getpoint的方法
提示2:WORD中有方法可以获得页边距
提示3:通过以上方法还是没有能实现
提示2:WORD中有方法可以获得页边距
提示3:通过以上方法还是没有能实现
#9
提示4 我能实现
#10
那就告诉人家,来这儿就是信任大家
哈哈
ding
哈哈
ding
#11
up
#12
www.http://www.utcsoft.com/pages/family050.htm
#13
学习中
#14
关注手写功能
#15
ttt2 (家合万事兴) 我觉得你很难直接去得到,而应该逆向思考,即先将一个WORD元素转换为屏幕坐标,然后通过屏幕坐标和WORD坐标换算比例来得到一个映射公式然后代入屏幕坐标求出WORD坐标.听起来比较麻烦,但实际上不麻烦的,我已经实现,但并不是这个转换,是效果类似的东西.我目前也在找直接转换的方法,兄弟找到了告诉我下,谢了
shps=doc.GetShapes();
app.SetScreenUpdating(FALSE);
// shp=shps.AddPicture("C:\\1.bmp",vFalse,vTrue,&COleVariant((long)0),&COleVariant((long)0),&COleVariant((long)144),&COleVariant((long)144),vOpt);//144=192/4*3
shp=shps.AddOLEControl(vControlName,&COleVariant((long)0),&COleVariant((long)0),&COleVariant((long)144),&COleVariant((long)144),vOpt);//144=192/4*3
// shp.SetName("YJTZ");
float Zoom;
win=doc.GetActiveWindow();
vie=win.GetView();
zoo=vie.GetZoom();
Zoom=zoo.GetPercentage();
Zoom/=100;
// shp.IncrementTop(ph*a.intVal+ph/2);
/* var.lVal = 1;
int num=ishps.GetCount();
for (int i=1;i<=num;i++)
{
ishp=ishps.Item(i);
float f=ishp.GetHeight();
if(f==48.75)
break;
}*/
// ishp=ishps.Item(ishps.GetCount());
// shp=ishp.ConvertToShape();
win.GetPoint(&ScrPosX,&ScrPosY,&ScrWidth,&ScrPosHeight,shp);
shp.IncrementLeft((CurScrPoint.x-ScrPosX)/1.333/Zoom-50);
shp.IncrementTop((CurScrPoint.y-ScrPosY)/1.333/Zoom-50);
shp.SetLockAnchor(0);
shp.ZOrder(5);
war=shp.GetWrapFormat();
war.SetAllowOverlap(-1);
war.SetSide(0);
war.SetType(3);
app.SetScreenUpdating(TRUE);
以上是我的代码,效果类似.
shps=doc.GetShapes();
app.SetScreenUpdating(FALSE);
// shp=shps.AddPicture("C:\\1.bmp",vFalse,vTrue,&COleVariant((long)0),&COleVariant((long)0),&COleVariant((long)144),&COleVariant((long)144),vOpt);//144=192/4*3
shp=shps.AddOLEControl(vControlName,&COleVariant((long)0),&COleVariant((long)0),&COleVariant((long)144),&COleVariant((long)144),vOpt);//144=192/4*3
// shp.SetName("YJTZ");
float Zoom;
win=doc.GetActiveWindow();
vie=win.GetView();
zoo=vie.GetZoom();
Zoom=zoo.GetPercentage();
Zoom/=100;
// shp.IncrementTop(ph*a.intVal+ph/2);
/* var.lVal = 1;
int num=ishps.GetCount();
for (int i=1;i<=num;i++)
{
ishp=ishps.Item(i);
float f=ishp.GetHeight();
if(f==48.75)
break;
}*/
// ishp=ishps.Item(ishps.GetCount());
// shp=ishp.ConvertToShape();
win.GetPoint(&ScrPosX,&ScrPosY,&ScrWidth,&ScrPosHeight,shp);
shp.IncrementLeft((CurScrPoint.x-ScrPosX)/1.333/Zoom-50);
shp.IncrementTop((CurScrPoint.y-ScrPosY)/1.333/Zoom-50);
shp.SetLockAnchor(0);
shp.ZOrder(5);
war=shp.GetWrapFormat();
war.SetAllowOverlap(-1);
war.SetSide(0);
war.SetType(3);
app.SetScreenUpdating(TRUE);
以上是我的代码,效果类似.
#16
关注手写签名,大家有什么方案,怎么实现的讨论一下
#17
谢谢 rovoboy(魂之猎人) 定位问题已经解决,定位非常准确