• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

C# MObject类代码示例

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

本文整理汇总了C#中MObject的典型用法代码示例。如果您正苦于以下问题:C# MObject类的具体用法?C# MObject怎么用?C# MObject使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。



MObject类属于命名空间,在下文中一共展示了MObject类的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C#代码示例。

示例1: doIt

        //
        // Takes the  nodes that are on the active selection list and adds an
        // attribute changed callback to each one.
        //
        public override void doIt(MArgList args)
        {
            MObject 		node = new MObject();
            MSelectionList 	list = new MSelectionList();

            // Register node callbacks for all nodes on the active list.
            //
            MGlobal.getActiveSelectionList( list );

            for ( uint i=0; i<list.length; i++ )
            {
                list.getDependNode( i, node );

                try
                {
                    node.AttributeChanged += userCB;
                }
                catch (Exception)
                {
                    MGlobal.displayInfo("MNodeMessage.addCallback failed\n");
                    continue;
                }

                // C# SDK will cleanup events, when this plugin is unloaded
                // callbacks.append(node);
            }

            return;
        }
开发者ID:EricTRocks,项目名称:Maya-devkit,代码行数:33,代码来源:nodeMessageCmd.cs


示例2: connectNodeToAttr

        //
        //    Description:
        //        Overloaded function from MPxDragAndDropBehavior
        //    this method will assign the correct output from the slope shader
        //    onto the given attribute.
        //
        public override void connectNodeToAttr(MObject sourceNode, MPlug destinationPlug, bool force)
        {
            MFnDependencyNode src = new MFnDependencyNode(sourceNode);

            //if we are dragging from a slopeShaderNodeCSharp
            //to a shader than connect the outColor
            //plug to the plug being passed in
            //
            if(destinationPlug.node.hasFn(MFn.Type.kLambert)) {
                if (src.typeName == "slopeShaderNodeCSharp")
                {
                    MPlug srcPlug = src.findPlug("outColor");
                    if(!srcPlug.isNull && !destinationPlug.isNull)
                    {
                        string cmd = "connectAttr ";
                        cmd += srcPlug.name + " ";
                        cmd += destinationPlug.name;
                        MGlobal.executeCommand(cmd);
                    }
                }
            } else {
                //in all of the other cases we do not need the plug just the node
                //that it is on
                //
                MObject destinationNode = destinationPlug.node;
                connectNodeToNode(sourceNode, destinationNode, force);
            }
        }
开发者ID:EricTRocks,项目名称:Maya-devkit,代码行数:34,代码来源:slopeShader.cs


示例3: checkArgs

		//======================================================================
		//
		// Check the parsed arguments and do/undo/redo the command as appropriate
		//
		void checkArgs(ref MArgDatabase argsDb)
		{
			MSelectionList objects = new MSelectionList();

            argsDb.getObjects(objects);

			for (uint i = 0; i < objects.length; ++i)
			{
                MDagPath dagPath = new MDagPath();
                objects.getDagPath((uint)i, dagPath);
                MFnDagNode dagNode = new MFnDagNode(dagPath.node);
                MObject obj = dagNode.child(0);
                if (obj.apiTypeStr == "kMesh")
                {
                    fMesh = new MFnMesh(obj);
                    fObj = obj;
                    fObjTransform = dagPath.node;
                }
			}

			if( fMesh == null || fObj == null || fObjTransform == null )
			{
				string errMsg = MStringResource.getString(MetaDataRegisterMStringResources.kObjectNotFoundError);
				throw new ArgumentException(errMsg, "argsDb");
			}
		}
开发者ID:meshdgp,项目名称:MeshDGP,代码行数:30,代码来源:CreateMetadataFromTypeCmd.cs


示例4: receiveCurveFromMaya

        public void receiveCurveFromMaya(string node_name, out Point3DCollection controlVertices, out List<double> weights, out List<double> knots, out int degree, out bool closed, out bool rational)
        {
            MPlug plLocal = getPlug(node_name, "local");
            MObject oLocal = new MObject();
            plLocal.getValue(oLocal);

            MFnNurbsCurve nc = new MFnNurbsCurve(oLocal);

            MPointArray p_aCVs = new MPointArray();
            nc.getCVs(p_aCVs, MSpace.Space.kWorld);
            controlVertices = new Point3DCollection();
            weights = new List<double>();
            foreach (MPoint p in p_aCVs)
            {
                controlVertices.Add(new Point3D(p.x, p.y, p.z));
                weights.Add(1.0);
            }

            double min = 0, max = 0;
            nc.getKnotDomain(ref min, ref max);
            MDoubleArray d_aKnots = new MDoubleArray();
            nc.getKnots(d_aKnots);

            knots = new List<double>();
            knots.Add(min);
            foreach (double d in d_aKnots)
            {
                knots.Add(d);
            }
            knots.Add(max);

            degree = nc.degree;
            closed = nc.form == MFnNurbsCurve.Form.kClosed ? true : false;
            rational = true;
        }
开发者ID:MrWalsh,项目名称:DynaMaya-WIP,代码行数:35,代码来源:DynamoMayaService.cs


示例5: apiMeshGeomIterator

        public apiMeshGeomIterator(object userGeometry, MObject component)
            : base(userGeometry, component)
        {
            meshGeometry = (apiMeshGeom)userGeometry;

            reset();
        }
开发者ID:EricTRocks,项目名称:Maya-devkit,代码行数:7,代码来源:apiMeshIterator.cs


示例6: addComplexFloatGenericAttribute

        // Adds a generic attribute that accepts a float, float2, float3
        public static void addComplexFloatGenericAttribute(ref MObject attrObject, string longName, string shortName)
        {
            // Create the generic attribute and set the 3 accepts types
            MFnGenericAttribute gAttr = new MFnGenericAttribute();
            attrObject = gAttr.create( longName, shortName );
            try
            {
                gAttr.addAccept(MFnNumericData.Type.kFloat);

                gAttr.addAccept(MFnNumericData.Type.k2Float);

                gAttr.addAccept(MFnNumericData.Type.k3Float);
            }
            catch (System.Exception)
            {
                MGlobal.displayError("error happens in addAccept");
            }

            gAttr.isWritable = false;
            gAttr.isStorable = false;

            // Add the attribute to the node
            try
            {
                addAttribute(attrObject);
            }
            catch (System.Exception)
            {
                MGlobal.displayError("error happens in addAttribute");
            }
        }
开发者ID:EricTRocks,项目名称:Maya-devkit,代码行数:32,代码来源:genericAttributeNode.cs


示例7: Awake

    protected override void Awake()
    {
        base.Awake();

        if (_rTrans == null) _rTrans = GetComponent<RectTransform>();
        if (_mObj == null) _mObj = transform.GetComponentInParentRecursively<MObject>();
    }
开发者ID:SoulfulSolutions,项目名称:The_Last_Ranger,代码行数:7,代码来源:MObjTranslate.cs


示例8: connectToDependNode

        public override void connectToDependNode(MObject node)
        {

            // Find the rotate and rotatePivot plugs on the node.  These plugs will 
            // be attached either directly or indirectly to the manip values on the
            // rotate manip.
            //
            MFnDependencyNode nodeFn = new MFnDependencyNode(node);
            MPlug rPlug = nodeFn.findPlug("rotate");
            MPlug rcPlug = nodeFn.findPlug("rotatePivot");

            // If the translate pivot exists, it will be used to move the state manip
            // to a convenient location.
            //
            MPlug tPlug = nodeFn.findPlug("translate");

            // To avoid having the object jump back to the default rotation when the
            // manipulator is first used, extract the existing rotation from the node
            // and set it as the initial rotation on the manipulator.
            //
            MEulerRotation existingRotation = new MEulerRotation(vectorPlugValue(rPlug));
            MVector existingTranslation = new MVector(vectorPlugValue(tPlug));

            // 
            // The following code configures default settings for the rotate 
            // manipulator.
            //

            MFnRotateManip rotateManip = new MFnRotateManip(fRotateManip);
            rotateManip.setInitialRotation(existingRotation);
            rotateManip.setRotateMode(MFnRotateManip.RotateMode.kObjectSpace);
            rotateManip.displayWithNode(node);

            // Add a callback function to be called when the rotation value changes
            //

            //rotatePlugIndex = addManipToPlugConversionCallback( rPlug, (manipToPlugConversionCallback)&exampleRotateManip::rotationChangedCallback );
            ManipToPlugConverion[rPlug] = rotationChangedCallback;
            // get the index of plug
            rotatePlugIndex = this[rPlug];

            // Create a direct (1-1) connection to the rotation center plug
            //
            rotateManip.connectToRotationCenterPlug(rcPlug);

            // Place the state manip at a distance of 2.0 units away from the object
            // along the X-axis.
            //
            MFnStateManip stateManip = new MFnStateManip(fStateManip);
            MVector delta = new MVector(2, 0, 0);
            stateManip.setTranslation(existingTranslation + delta,
                MSpace.Space.kTransform);

            finishAddingManips();
            base.connectToDependNode(node);
        }
开发者ID:meshdgp,项目名称:MeshDGP,代码行数:56,代码来源:rotateManip.cs


示例9: createMesh

        protected MObject createMesh(MTime time, ref MObject outData)
        {
            int numVertices, frame;
            float cubeSize;
            MFloatPointArray points = new MFloatPointArray();
            MFnMesh meshFS = new MFnMesh();

            // Scale the cube on the frame number, wrap every 10 frames.
            frame = (int)time.asUnits(MTime.Unit.kFilm);
            if (frame == 0)
                frame = 1;
            cubeSize = 0.5f * (float)(frame % 10);

            const int numFaces = 6;
            numVertices = 8;

            MFloatPoint vtx_1 = new MFloatPoint(-cubeSize, -cubeSize, -cubeSize);
            MFloatPoint vtx_2 = new MFloatPoint(cubeSize, -cubeSize, -cubeSize);
            MFloatPoint vtx_3 = new MFloatPoint(cubeSize, -cubeSize, cubeSize);
            MFloatPoint vtx_4 = new MFloatPoint(-cubeSize, -cubeSize, cubeSize);
            MFloatPoint vtx_5 = new MFloatPoint(-cubeSize, cubeSize, -cubeSize);
            MFloatPoint vtx_6 = new MFloatPoint(-cubeSize, cubeSize, cubeSize);
            MFloatPoint vtx_7 = new MFloatPoint(cubeSize, cubeSize, cubeSize);
            MFloatPoint vtx_8 = new MFloatPoint(cubeSize, cubeSize, -cubeSize);
            points.append(vtx_1);
            points.append(vtx_2);
            points.append(vtx_3);
            points.append(vtx_4);
            points.append(vtx_5);
            points.append(vtx_6);
            points.append(vtx_7);
            points.append(vtx_8);


            // Set up an array containing the number of vertices
            // for each of the 6 cube faces (4 verticies per face)
            //
            int[] face_counts = { 4, 4, 4, 4, 4, 4 };
            MIntArray faceCounts = new MIntArray(face_counts);

            // Set up and array to assign vertices from points to each face 
            //
            int[] face_connects = {	0, 1, 2, 3,
									4, 5, 6, 7,
									3, 2, 6, 5,
									0, 3, 5, 4,
									0, 4, 7, 1,
									1, 7, 6, 2	};
            MIntArray faceConnects = new MIntArray(face_connects);

            MObject newMesh = meshFS.create(numVertices, numFaces, points, faceCounts, faceConnects, outData);

            return newMesh;
        }
开发者ID:meshdgp,项目名称:MeshDGP,代码行数:54,代码来源:animCubeNode.cs


示例10: TrackingObject

		public TrackingObject(MObject source)
		{
			this.Position = new Vector2D((double)source.X(), (double)source.Y());
			this.Area = source.Area();
			this.Width = source.Width();
			this.Height = source.Height();
			this.Left = source.Left();
			this.Right = source.Right();
			this.Top = source.Top();
			this.Bottom = source.Bottom();
		}
开发者ID:keith06,项目名称:VVVV.Nodes.Image,代码行数:11,代码来源:TrackingObject.cs


示例11: iterator

 //////////////////////////////////////////////////////////////////
 //
 // Overrides from MPxGeometryData
 //
 //////////////////////////////////////////////////////////////////
 public override MPxGeometryIterator iterator( MObjectArray componentList,
     MObject component,
     bool useComponents)
 {
     apiMeshGeomIterator result = null;
     if ( useComponents ) {
         result = new apiMeshGeomIterator( fGeometry, componentList );
     }
     else {
         result = new apiMeshGeomIterator( fGeometry, component );
     }
     return result;
 }
开发者ID:EricTRocks,项目名称:Maya-devkit,代码行数:18,代码来源:apiMeshData.cs


示例12: geometryIteratorSetup

 public override MPxGeometryIterator geometryIteratorSetup(MObjectArray componentList, MObject components, bool forReadOnly)
 {
     apiSimpleShapeIterator result;
     if (components.isNull)
     {
         result = new apiSimpleShapeIterator(controlPoints, componentList);
     }
     else
     {
         result = new apiSimpleShapeIterator(controlPoints, components);
     }
     return result;
 }
开发者ID:EricTRocks,项目名称:Maya-devkit,代码行数:13,代码来源:apiSimpleShape.cs


示例13: createVertexStream

        public override void createVertexStream(MObject objPath,
            MVertexBuffer vertexBuffer,
            MComponentDataIndexing targetIndexing,
            MComponentDataIndexing sharedIndexing,
            MVertexBufferArray sourceStreams)
        {
            // get the descriptor from the vertex buffer.
            // It describes the format and layout of the stream.
            MVertexBufferDescriptor descriptor = vertexBuffer.descriptor;

            // we are expecting a float stream.
            if (descriptor.dataType != Autodesk.Maya.OpenMayaRender.MHWRender.MGeometry.DataType.kFloat) return;

            // we are expecting a float2
            if (descriptor.dimension != 2) return;

            // we are expecting a texture channel
            if (descriptor.semantic != Autodesk.Maya.OpenMayaRender.MHWRender.MGeometry.Semantic.kTexture) return;

            // get the mesh from the current path, if it is not a mesh we do nothing.
            MFnMesh mesh = null;
            try {
                mesh = new MFnMesh(objPath);
            } catch(System.Exception) {
                return; // failed
            }

            MUintArray indices = targetIndexing.indicesProperty;
            uint vertexCount = indices.length;
            if (vertexCount <= 0) return;

            unsafe {
                // acquire the buffer to fill with data.
                float * buffer = (float *)vertexBuffer.acquire(vertexCount);

                for (int i = 0; i < vertexCount; i++)
                {
                    // Here we are embedding some custom data into the stream.
                    // The included effects (vertexBufferGeneratorGL.cgfx and
                    // vertexBufferGeneratorDX11.fx) will alternate
                    // red, green, and blue vertex colored triangles based on this input.
                    *(buffer++) = 1.0f;
                    *(buffer++) = (float)indices[i]; // color index
                }

                // commit the buffer to signal completion.
                vertexBuffer.commit( (byte *)buffer);
            }
        }
开发者ID:EricTRocks,项目名称:Maya-devkit,代码行数:49,代码来源:vertexBufferGenerator.cs


示例14: receiveVertexPositionsFromMaya

 public Point3DCollection receiveVertexPositionsFromMaya(string node_name)
 {
     MPlug plLocal = getPlug(node_name, "outMesh");
     MObject oOutMesh = new MObject();
     plLocal.getValue(oOutMesh);
     MFnMesh m = new MFnMesh(oOutMesh);
     MPointArray p_aVertices = new MPointArray();
     m.getPoints(p_aVertices, MSpace.Space.kWorld);
     Point3DCollection vertices = new Point3DCollection();
     foreach (MPoint p in p_aVertices)
     {
         vertices.Add(new Point3D(p.x, p.y, p.z));
     }
     return vertices;
 }
开发者ID:MrWalsh,项目名称:DynaMaya-WIP,代码行数:15,代码来源:DynamoMayaService.cs


示例15: getSourceIndexing

        public override bool getSourceIndexing(MObject obj, MComponentDataIndexing sourceIndexing)
		{
            // get the mesh from the current path, if it is not a mesh we do nothing.
			MFnMesh mesh = null;
			try {
				mesh = new MFnMesh(obj);
			} catch(System.Exception) {
				return false;
			}

			// if it is an empty mesh we do nothing.
			int numPolys = mesh.numPolygons;
			if (numPolys <= 0) return false;

			// for each face
            MUintArray vertToFaceVertIDs = sourceIndexing.indicesProperty;
			uint faceNum = 0;
			for (int i = 0; i < numPolys; i++)
			{
				// assign a color ID to all vertices in this face.
				uint faceColorID = faceNum % 3;

				int vertexCount = mesh.polygonVertexCount(i);
				for (int j = 0; j < vertexCount; j++)
				{
					// set each face vertex to the face color
					vertToFaceVertIDs.append(faceColorID);
				}

				faceNum++;
			}

			// assign the source indexing
			sourceIndexing.setComponentType(MComponentDataIndexing.MComponentType.kFaceVertex);

			return true;
		}
开发者ID:meshdgp,项目名称:MeshDGP,代码行数:37,代码来源:vertexBufferGenerator.cs


示例16: componentToPlugs

        //
        // Description
        //
        //    Converts the given component values into a selection list of plugs.
        //    This method is used to map components to attributes.
        //
        // Arguments
        //
        //    component - the component to be translated to a plug/attribute
        //    list      - a list of plugs representing the passed in component
        //
        public override void componentToPlugs(MObject component, MSelectionList list)
        {
            if ( component.hasFn(MFn.Type.kSingleIndexedComponent) ) {

                MFnSingleIndexedComponent fnVtxComp = new MFnSingleIndexedComponent( component );
                MObject thisNode = thisMObject();
                MPlug plug = new MPlug( thisNode, mControlPoints );
                // If this node is connected to a tweak node, reset the
                // plug to point at the tweak node.
                //
                convertToTweakNodePlug(plug);

                int len = fnVtxComp.elementCount;

                for ( int i = 0; i < len; i++ )
                {
                    plug.selectAncestorLogicalIndex((uint)fnVtxComp.element(i), plug.attribute);
                    list.add(plug);
                }
            }
        }
开发者ID:EricTRocks,项目名称:Maya-devkit,代码行数:32,代码来源:apiMeshShape.cs


示例17: boundingBox

        //
        // Description
        //
        //    Returns the bounding box for this object.
        //    It is a good idea not to recompute here as this funcion is called often.
        //
        public override MBoundingBox boundingBox()
        {
            MObject thisNode = thisMObject();
            MPlug c1Plug = new MPlug( thisNode, bboxCorner1 );
            MPlug c2Plug = new MPlug( thisNode, bboxCorner2 );
            MObject corner1Object = new MObject();
            MObject corner2Object = new MObject();
            c1Plug.getValue( corner1Object );
            c2Plug.getValue( corner2Object );

            double[] corner1 = new double[3];
            double[] corner2 = new double[3];

            MFnNumericData fnData = new MFnNumericData();
            fnData.setObject( corner1Object );
            fnData.getData(out corner1[0], out corner1[1], out corner1[2]);
            fnData.setObject( corner2Object );
            fnData.getData(out corner2[0], out corner2[1], out corner2[2]);

            MPoint corner1Point = new MPoint( corner1[0], corner1[1], corner1[2] );
            MPoint corner2Point = new MPoint( corner2[0], corner2[1], corner2[2] );

            return new MBoundingBox( corner1Point, corner2Point );
        }
开发者ID:EricTRocks,项目名称:Maya-devkit,代码行数:30,代码来源:apiMeshShape.cs


示例18: acceptsGeometryIterator

 //
 // Description
 //
 //    Specifies that this shape can provide an iterator for getting/setting
 //    control point values.
 //
 // Arguments
 //
 //    writable   - Maya asks for an iterator that can set points if this is true
 //    forReadOnly - Maya asking for an iterator for querying only
 //
 public override bool acceptsGeometryIterator( MObject obj,
     bool writeable = true,
     bool forReadOnly = false)
 {
     return true;
 }
开发者ID:EricTRocks,项目名称:Maya-devkit,代码行数:17,代码来源:apiMeshShape.cs


示例19: vertexOffsetDirection

        //
        // Description
        //
        //    Returns offsets for the given components to be used my the
        //    move tool in normal/u/v mode.
        //
        // Arguments
        //
        //    component - components to calculate offsets for
        //    direction - array of offsets to be filled
        //    mode      - the type of offset to be calculated
        //    normalize - specifies whether the offsets should be normalized
        //
        // Returns
        //
        //    true if the offsets could be calculated, false otherwise
        //
        // Support the move tools normal/u/v mode (components)
        //
        public override bool vertexOffsetDirection( MObject component,
            MVectorArray direction,
            MVertexOffsetMode mode,
            bool normalize)
        {
            bool offsetOkay = false ;

            MFnSingleIndexedComponent fnComp = new MFnSingleIndexedComponent( component );
            if ( component.apiType != MFn.Type.kMeshVertComponent ) {
                return false;
            }

            offsetOkay = true ;

            apiMeshGeom geomPtr = meshGeom();
            if ( null == geomPtr ) {
                return false;
            }

            // For each vertex add the appropriate offset
            //
            int count = fnComp.elementCount;
            for ( int idx=0; idx<count; idx++ )
            {
                MVector normal = geomPtr.normals[ fnComp.element(idx) ];

                if( mode == MVertexOffsetMode.kNormal ) {
                    if( normalize ) normal.normalize() ;
                    direction.append( normal );
                }
                else {
                    // Construct an orthonormal basis from the normal
                    // uAxis, and vAxis are the new vectors.
                    //
                    MVector uAxis = new MVector();
                    MVector vAxis = new MVector();
                    uint i, j, k;
                    double a;
                    normal.normalize();

                    i = 0;
                    a = Math.Abs( normal[0] );
                    if ( a < Math.Abs(normal[1]) )
                    {
                        i = 1;
                        a = Math.Abs(normal[1]);
                    }

                    if ( a < Math.Abs(normal[2]) )
                    {
                        i = 2;
                    }

                    j = (i+1)%3;
                    k = (j+1)%3;

                    a = Math.Sqrt(normal[i]*normal[i] + normal[j]*normal[j]);
                    uAxis[i] = -normal[j]/a;
                    uAxis[j] = normal[i]/a;
                    uAxis[k] = 0.0;
                    vAxis = normal.crossProduct( uAxis );

                    if ( mode == MVertexOffsetMode.kUTangent ||
                         mode == MVertexOffsetMode.kUVNTriad )
                    {
                        if( normalize ) uAxis.normalize() ;
                        direction.append( uAxis );
                    }

                    if ( mode == MVertexOffsetMode.kVTangent ||
                         mode == MVertexOffsetMode.kUVNTriad )
                    {
                        if( normalize ) vAxis.normalize() ;
                        direction.append( vAxis );
                    }

                    if ( mode == MVertexOffsetMode.kUVNTriad ) {
                        if( normalize ) normal.normalize() ;
                        direction.append( normal );
                    }
                }
//.........这里部分代码省略.........
开发者ID:EricTRocks,项目名称:Maya-devkit,代码行数:101,代码来源:apiMeshShape.cs


示例20: shouldSave

        //
        // Description
        //
        //    During file save this method is called to determine which
        //    attributes of this node should get written. The default behavior
        //    is to only save attributes whose values differ from the default.
        //
        //
        //
        public override bool shouldSave(MPlug plug, ref bool result)
        {
            if( plug.attribute.equalEqual(mControlPoints) ||
                plug.attribute.equalEqual(mControlValueX) ||
                plug.attribute.equalEqual(mControlValueY) ||
                plug.attribute.equalEqual(mControlValueZ) )
            {
                if( hasHistory() ) {
                    // Calling this will only write tweaks if they are
                    // different than the default value.
                    //
                    return base.shouldSave( plug, ref result );
                }
                else {
                    result = false;
                }
            }
            else if ( plug.attribute.equalEqual(cachedSurface) ) {
                if ( hasHistory() ) {
                    result = false;
                }
                else {
                    MObject data = new MObject();
                    plug.getValue( data );
                    result = ( ! data.isNull );
                }
            }
            else {
                return base.shouldSave( plug, ref result );
            }

            return true;
        }
开发者ID:EricTRocks,项目名称:Maya-devkit,代码行数:42,代码来源:apiMeshShape.cs



注:本文中的MObject类示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
C# MPSettings类代码示例发布时间:2022-05-24
下一篇:
C# MONITORINFO类代码示例发布时间:2022-05-24
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap