|
阅读:1484回复:6
IPage的BackGroungColor问题
<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" /> |
|
|
1楼#
发布于: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> |
|
|
2楼#
发布于: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编辑过]
|
|
|
3楼#
发布于: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编辑过]
|
|
|
4楼#
发布于:2005-08-29 13:56
这样改变的只是把getstyle的值赋给background,我想要把getstyle的值赋给backgroundcolor
|
|
|
5楼#
发布于:2005-08-29 14:04
<P>把getstyle的值赋给backgroundcolor,这还用赋值吗?在说了StylSelector对象也就没有颜色信息啊!</P>
|
|
|
6楼#
发布于: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编辑过]
|
|