Help impelmenting ILayerEffects in Graphics layer to use transparency

المشرف العام

Administrator
طاقم الإدارة
I tried to get graphics in an ILayar class and implemented ILayerEffects to get transparency but it does not help can you help me? I am attaching the class file.

using System;using System.Collections.Generic;using System.Text;using System.Runtime.InteropServices;using ESRI.ArcGIS.esriSystem;using ESRI.ArcGIS.Geodatabase;using ESRI.ArcGIS.Carto;using ESRI.ArcGIS.Geometry;

namespace FirstAddin{ [Guid("0428816a-083f-47a1-9385-8e85b11032f4")] [ClassInterface(ClassInterfaceType.None)] [ProgId("FirstAddin.MyGraphicsLayer")] public class MyGraphicsLayer : ESRI.ArcGIS.Carto.ILayer , IPersistVariant, IGeoDataset, ILayerEffects { private IGeometry mextgom; private ISpatialReference mLayersSpatialReference; private ISpatialReference mSpatialReference; private IPolygon mpolygon; private bool mCached; private bool mVisible; private string mName; private bool mValid; private Double mMaxScale; private Double mMinScale; private short mtransp;

public MyGraphicsLayer(ISpatialReference sp){ CreatePolygonByPoints(); mSpatialReference = sp; mValid = true; mtransp = 0; mName ="MyGraphicsLayer";} #region "ILayer Implementations" public ESRI.ArcGIS.Geometry.IEnvelope AreaOfInterest { get { // TODO: Add MyGraphicsLayer.AreaOfInterest getter implementation return Extent; } } public bool Cached { get { // TODO: Add MyGraphicsLayer.Cached getter implementation return mCached; } set { mCached = value; // TODO: Add MyGraphicsLayer.Cached setter implementation } } public void Draw(ESRI.ArcGIS.esriSystem.esriDrawPhase DrawPhase, ESRI.ArcGIS.Display.IDisplay Display, ESRI.ArcGIS.esriSystem.ITrackCancel TrackCancel) { // TODO: Add MyGraphicsLayer.Draw implementation if (Display == null) { return; } ESRI.ArcGIS.Display.IScreenDisplay screenDisplay =(ESRI.ArcGIS.Display.IScreenDisplay) Display; // Constant. Display.StartDrawing(Display.hDC, (System.Int16) ESRI.ArcGIS.Display.esriScreenCache.esriAllScreenCaches); // Explicit Cast ESRI.ArcGIS.Display.IRgbColor rgbColor = new ESRI.ArcGIS.Display.RgbColorClass(); rgbColor.Red = 255; //rgbColor.Transparency = 0; ESRI.ArcGIS.Display.IColor color = rgbColor; // Implicit cast. ESRI.ArcGIS.Display.ISimpleFillSymbol simpleFillSymbol = new ESRI.ArcGIS.Display.SimpleFillSymbolClass(); simpleFillSymbol.Color.NullColor = true; simpleFillSymbol.Color = color; ESRI.ArcGIS.Display.ISymbol symbol = simpleFillSymbol as ESRI.ArcGIS.Display.ISymbol; // Dynamic cast. //ESRI.ArcGIS.Display.IRubberBand rubberBand = new // ESRI.ArcGIS.Display.RubberPolygonClass(); //ESRI.ArcGIS.Geometry.IGeometry geometry = rubberBand.TrackNew(screenDisplay, // symbol); ESRI.ArcGIS.Geometry.IGeometry geometry = (IGeometry)mpolygon; Display.SetSymbol(symbol); Display.DrawPolygon(geometry); Display.FinishDrawing(); } public double MaximumScale { get { // TODO: Add MyGraphicsLayer.MaximumScale getter implementation return mMaxScale; } set { // TODO: Add MyGraphicsLayer.MaximumScale setter implementation mMaxScale = value; } } public double MinimumScale { get { // TODO: Add MyGraphicsLayer.MinimumScale getter implementation return mMinScale; } set { // TODO: Add MyGraphicsLayer.MinimumScale setter implementation mMinScale = value; } } public string Name { get { // TODO: Add MyGraphicsLayer.Name getter implementation return mName; } set { // TODO: Add MyGraphicsLayer.Name setter implementation mName = value; } } public bool ShowTips { get { // TODO: Add MyGraphicsLayer.ShowTips getter implementation return false; } set { // TODO: Add MyGraphicsLayer.ShowTips setter implementation } } public ESRI.ArcGIS.Geometry.ISpatialReference SpatialReference { set { // TODO: Add MyGraphicsLayer.SpatialReference setter implementation mLayersSpatialReference = value; } } public int SupportedDrawPhases { get { // TODO: Add MyGraphicsLayer.SupportedDrawPhases getter implementation return Convert.ToInt32(esriDrawPhase.esriDPGeography | esriDrawPhase.esriDPSelection); } } public bool Valid { get { // TODO: Add MyGraphicsLayer.Valid getter implementation return mValid ; } } public bool Visible { get { // TODO: Add MyGraphicsLayer.Visible getter implementation return mVisible; } set { // TODO: Add MyGraphicsLayer.Visible setter implementation mVisible = value; } } public string get_TipText(double x, double y, double Tolerance) { // TODO: Add MyGraphicsLayer.get_TipText implementation return default(string); } #endregion #region "IPersistVariant" public UID ID { get { UID uid = new UIDClass(); uid.Value = "FirstAddin.MyGraphicsLayer"; return uid; } } public void Load(IVariantStream Stream) { mName = (string)Stream.Read(); mVisible = (bool)Stream.Read(); mValid = (bool)Stream.Read(); mtransp = (short)Stream.Read(); mCached = (bool)Stream.Read(); mMaxScale = (double)Stream.Read(); mMinScale = (double)Stream.Read(); } public void Save(IVariantStream Stream) { Stream.Write(mName); Stream.Write( mVisible); Stream.Write(mValid); Stream.Write(mtransp); Stream.Write(mCached); Stream.Write(mMaxScale); Stream.Write( mMinScale); } #endregion #region "IGeoDataset" public ESRI.ArcGIS.Geometry.IEnvelope Extent { get { return mpolygon.Envelope; } } ESRI.ArcGIS.Geometry.ISpatialReference IGeoDataset.SpatialReference { get { return mSpatialReference; } } #endregion #region "ILayerEffects" public short Brightness { get { throw new NotImplementedException(); } set { throw new NotImplementedException(); } } public short Contrast { get { throw new NotImplementedException(); } set { throw new NotImplementedException(); } } public bool SupportsBrightnessChange { get { throw new NotImplementedException(); } } public bool SupportsContrastChange { get { throw new NotImplementedException(); } } public bool SupportsInteractive { get { throw new NotImplementedException(); } set { throw new NotImplementedException(); } } public bool SupportsTransparency { get { throw new NotImplementedException(); } } public short Transparency { get { return mtransp; } set { mtransp =value ; } } #endregion #region "Private" public void CreatePolygonByPoints() { //Build polygon from a sequence of points. //At ArcGIS 9.2, the recommended way to add arrays of points to a geometry is to use //the IGeometryBridge2 interface on the GeometryEnvironment singleton object. IGeometryBridge2 geometryBridge2 = new GeometryEnvironmentClass(); IPointCollection4 pointCollection4 = new PolygonClass(); //TODO: //pointCollection4.SpatialReference = 'Define the spatial reference of the new polygon WKSPoint[] aWKSPointBuffer = null; long cPoints = 4; //The number of points in the first part aWKSPointBuffer = new WKSPoint[System.Convert.ToInt32(cPoints - 1) + 1]; aWKSPointBuffer[0].X= 185680.7286; aWKSPointBuffer[0].Y = 6476124.6791; aWKSPointBuffer[1].X = 188970.8289; aWKSPointBuffer[1].Y = 6476124.6791; aWKSPointBuffer[2].X = 188970.8289; aWKSPointBuffer[2].Y = 6478712.3093; aWKSPointBuffer[3].X = 185680.7286; aWKSPointBuffer[3].Y = 6478712.3093; //aWKSPointBuffer[4].X = 185680.7286; //aWKSPointBuffer[4].Y = 6476124.6791; //TODO: //aWKSPointBuffer = 'Read cPoints into the point buffer geometryBridge2.SetWKSPoints(pointCollection4, ref aWKSPointBuffer); mpolygon = (IPolygon)pointCollection4; mpolygon.SpatialReference = mSpatialReference; //pointCollection4 has now been defined } #endregion}}



أكثر...
 
أعلى