ahshegis
路人甲
路人甲
  • 注册日期2004-10-22
  • 发帖数181
  • QQ
  • 铜币847枚
  • 威望0点
  • 贡献值0点
  • 银元0个
阅读:1484回复:6

IPage的BackGroungColor问题

楼主#
更多 发布于:2005-08-26 11:39
<P>Dim p As IStyleSelector<BR>Set p = New BackgroundSelector</P>
<P>Dim pb As IBackground<BR>Set pb = p.GetStyle(0)<BR>我想把IPage的BackGroungColor赋值为Style得到的颜色,pb得到的是Style<BR>而IPage的BackGroundColor是IColor.这两个应该怎么连在一起?</P><img src="images/post/smile/dvbbs/em12.gif" />
喜欢0 评分0
cftao2008
路人甲
路人甲
  • 注册日期2005-03-09
  • 发帖数141
  • QQ
  • 铜币568枚
  • 威望0点
  • 贡献值0点
  • 银元0个
1楼#
发布于:2005-08-29 14:13
<P><FONT color=#0000ff>    Dim pFill As IFillSymbol  </FONT></P>
<P>    Dim pSymbBackGround As ISymbolBackground<br>    Set pSymbBackGround = pBackGround<br>    <CODE><FONT color=#0000ff>Set</FONT></CODE> pFill = pSymbBackGround.FillSymbol</P>
<P>    set pColor = pFill.Color</P>
<P>我看这样可以!<br></P>
[此贴子已经被作者于2005-8-29 16:11:26编辑过]
举报 回复(0) 喜欢(0)     评分
cftao2008
路人甲
路人甲
  • 注册日期2005-03-09
  • 发帖数141
  • QQ
  • 铜币568枚
  • 威望0点
  • 贡献值0点
  • 银元0个
2楼#
发布于:2005-08-29 14:04
<P>把getstyle的值赋给backgroundcolor,这还用赋值吗?在说了StylSelector对象也就没有颜色信息啊!</P>
举报 回复(0) 喜欢(0)     评分
ahshegis
路人甲
路人甲
  • 注册日期2004-10-22
  • 发帖数181
  • QQ
  • 铜币847枚
  • 威望0点
  • 贡献值0点
  • 银元0个
3楼#
发布于:2005-08-29 13:56
这样改变的只是把getstyle的值赋给background,我想要把getstyle的值赋给backgroundcolor
举报 回复(0) 喜欢(0)     评分
cftao2008
路人甲
路人甲
  • 注册日期2005-03-09
  • 发帖数141
  • QQ
  • 铜币568枚
  • 威望0点
  • 贡献值0点
  • 银元0个
4楼#
发布于:2005-08-29 13:18
<P>其实你不就是要获得PageLayOut的背景吗?不是你说的那样用的!GetStyle方法的返回值用IBackGround接口可以获得。下面的代码你看看能不能用,如果不能用的话在进一步讨论就是!</P>
<P>  Dim pStlSel As IStyleSelector<br>    Set pStlSel = New BackgroundSelector<br>    pStlSel.DoModal 0<br>    <br>    Dim pMxDocument As IMxDocument<br>    Dim pMap As IMap<br>    Dim pFeatureLayer As IFeatureLayer<br>    Set pMxDocument = Application.Document<br>    Set pMap = pMxDocument.FocusMap<br>    Set pfeaturelaeyr = pMap.Layer(0)<br>    <br><FONT color=#f70997>    Dim pPage As IPage<br>    Set pPage = New Page<br>    pPage.Background = pStlSel.GetStyle(0)<br>    <br></FONT></P>
<P>接下来你就可以读取,背景色了!</P>
<P>    Dim pColor As IColor<br>    Set pColor = pPage.BackgroundColor<br>这就对了!</P>
[此贴子已经被作者于2005-8-29 13:33:57编辑过]
举报 回复(0) 喜欢(0)     评分
ahshegis
路人甲
路人甲
  • 注册日期2004-10-22
  • 发帖数181
  • QQ
  • 铜币847枚
  • 威望0点
  • 贡献值0点
  • 银元0个
5楼#
发布于:2005-08-29 11:04
<P>我的程序是这样的</P>
<P>Private Sub BackGroundColor_Click()<br>Dim pPage As IPage<br>Set pPage = PageLayoutControl1.Page</P>
<P>Dim m_pBackgroundColorSelector As IStyleSelector<br>Set m_pBackgroundColorSelector = New BackgroundSelector</P>
<P>m_pBackgroundColorSelector.DoModal PageLayoutControl1.hWnd</P>
<P>Dim pBackgroundColor As IUnknown ' IBackground</P>
<P>Set pBackgroundColor = m_pBackgroundColorSelector.GetStyle(0)</P>
<P>pPage.BackGroundColor = pBackgroundColor<br>PageLayoutControl1.ActiveView.PartialRefresh esriViewGraphics, Nothing, Nothing<br>End Sub</P>
<P>应该怎么改呢<br><img src="images/post/smile/dvbbs/em12.gif" /></P>
[此贴子已经被作者于2005-8-29 11:08:38编辑过]
举报 回复(0) 喜欢(0)     评分
cftao2008
路人甲
路人甲
  • 注册日期2005-03-09
  • 发帖数141
  • QQ
  • 铜币568枚
  • 威望0点
  • 贡献值0点
  • 银元0个
6楼#
发布于:2005-08-29 09:46
<P>GetStyle返回的是一个IUnKnown接口对象,所有的接口都继承这个接口,你只用引用一个IUnKnown的对象,就可以了。</P>
<P>下面这段代码是将GetStyle的返回值赋给了FeatureLayer对象。IColor也继承这个接口,你可以将这个返回值直接赋给一个Color对象。</P>
<P>    Dim pStlSel As IStyleSelector<BR>    Set pStlSel = New BackgroundSelector<BR>    pStlSel.DoModal 0<BR>    <BR>    Dim pMap As IMap<BR>    Dim pMxdocument As IMxDocument<BR>    Set pMxdocument = Application.Document<BR>    Set pMap = pMxdocument.FocusMap<BR>    <BR>    Dim pLayer As IFeatureLayer<BR>    Set pLayer = pMap.Layer(0)<BR>    Dim pUnK As IUnknown<BR>    Set pUnK = pLayer<BR>    Set pUnK = pStlSel.GetStyle(0)<BR></P>
举报 回复(0) 喜欢(0)     评分
游客

返回顶部