亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

C#中如何連接??低?/h1>
 更新時(shí)間:2023年02月26日 14:17:30   作者:Austin?Yang  
這篇文章主要介紹了C#中如何連接??低晢栴},具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

C# 連接??低?/h2>

 /// <summary>
    /// ??低昐DK
    /// </summary>
    public class SDK_Hikvision : SDK_Camera
    {
        /// <summary>
        /// 相機(jī)名稱
        /// </summary>
        private string Cam_name;
        /// <summary>
        /// 相機(jī)實(shí)例
        /// </summary>
        private MyCamera m_MyCamera;
        /// <summary>
        ///  圖像回調(diào) 相機(jī)名稱圖源
        /// </summary>
        public override event ImageDelegate Image_Delegate;
       
        IntPtr pBufForSaveImage = IntPtr.Zero;
        //注冊(cè)圖像回調(diào)函數(shù)
        MyCamera.cbOutputExdelegate ImageCallback;
        /// <summary>
        /// 是否已連接相機(jī)
        /// </summary>
        public override bool IsOpen {
            get {
                if (m_MyCamera!=null)
                {
                    return m_MyCamera.MV_CC_IsDeviceConnected_NET();
                }
                return false;
            }
        }
        /// <summary>
        /// 
        /// </summary>
        ~SDK_Hikvision()
        {
        }
        /// <summary>
        /// 實(shí)時(shí)采集
        /// </summary>
        public override void Acquisition()
        {
            if (m_MyCamera == null) return;
            if (GetTriggerMode()==TriggerMode.On)
            {
                SetTriggerMode(TriggerMode.Off);
            }
            m_MyCamera.MV_CC_StartGrabbing_NET();
        }
        /// <summary>
        /// 關(guān)閉采集
        /// </summary>
        public override void CloseConsecutive()
        {
            if (m_MyCamera == null) return;
            m_MyCamera.MV_CC_StopGrabbing_NET();
        }
        /// <summary>
        /// 關(guān)閉相機(jī)
        /// </summary>
        public override void Close_Camera()
        {
            if (m_MyCamera == null) return;
            m_MyCamera.MV_CC_StopGrabbing_NET();
            if (pBufForSaveImage != IntPtr.Zero)
            {
                Marshal.Release(pBufForSaveImage);
            }
            /*   m_MyCamera.MV_CC_StopGrabbing_NET();
               m_MyCamera.MV_CC_ClearImageBuffer_NET();
               m_MyCamera.MV_CC_CloseDevice_NET();
               //銷毀設(shè)備句柄 
               m_MyCamera.MV_CC_DestroyDevice_NET();*/
 
            m_MyCamera.MV_CC_CloseDevice_NET();
            m_MyCamera.MV_CC_DestroyDevice_NET();
        }
        /// <summary>
        /// 獲取曝光
        /// </summary>
        /// <returns></returns>
        public override double GetExposureTime()
        {
            if (m_MyCamera!=null)
            {
                MyCamera.MVCC_FLOATVALUE stParam = new MyCamera.MVCC_FLOATVALUE();
                m_MyCamera.MV_CC_GetFloatValue_NET("ExposureTime", ref stParam);
                return stParam.fCurValue;
            }
          return 0;
        }
        /// <summary>
        /// 獲取增益
        /// </summary>
        /// <returns></returns>
        public override double GetGainRaw()
        {
            if (m_MyCamera != null)
            {
                MyCamera.MVCC_FLOATVALUE stParam = new MyCamera.MVCC_FLOATVALUE();
                m_MyCamera.MV_CC_GetFloatValue_NET("Gain", ref stParam);
                return stParam.fCurValue;
            }
          return 0;
        }
        /// <summary>
        /// 獲取觸發(fā)模式
        /// </summary>
        /// <returns></returns>
        public override TriggerMode GetTriggerMode()
        {
            if (m_MyCamera != null)
            {
                MyCamera.MVCC_ENUMVALUE MVCC_SOURCE = new MyCamera.MVCC_ENUMVALUE();
                m_MyCamera.MV_CC_GetEnumValue_NET("TriggerMode", ref MVCC_SOURCE);
                MyCamera.MV_CAM_TRIGGER_MODE Value = (MyCamera.MV_CAM_TRIGGER_MODE)MVCC_SOURCE.nCurValue;
                return (TriggerMode)MVCC_SOURCE.nCurValue;
            }
            return TriggerMode.On;
        }
        /// <summary>
        /// 獲取觸發(fā)源
        /// </summary>
        /// <returns></returns>
        public override TriggerSource GetTriggerSource()
        {
            if (m_MyCamera != null)
            {
                MyCamera.MVCC_ENUMVALUE MVCC_SOURCE = new MyCamera.MVCC_ENUMVALUE();
                m_MyCamera.MV_CC_GetEnumValue_NET("TriggerSource", ref MVCC_SOURCE);
                MyCamera.MV_CAM_TRIGGER_SOURCE Value = (MyCamera.MV_CAM_TRIGGER_SOURCE)MVCC_SOURCE.nCurValue;
                return (TriggerSource)MVCC_SOURCE.nCurValue;
            }
            return TriggerSource.Software;
        }
      
        /// <summary>
        /// 打開相機(jī)
        /// </summary>
        /// <param name="Cam_Name">相機(jī)名稱</param>
        /// <returns></returns>
        public override bool Open_Camera(string Cam_Name)
        {
            System.GC.Collect();
            MyCamera.MV_CC_DEVICE_INFO_LIST m_stDeviceList = new MyCamera.MV_CC_DEVICE_INFO_LIST();
            int nRet = MyCamera.MV_CC_EnumDevices_NET(MyCamera.MV_GIGE_DEVICE | MyCamera.MV_USB_DEVICE, ref m_stDeviceList);
            if (0 != nRet)
            {
                return false;
            }
            for (int i = 0; i < m_stDeviceList.nDeviceNum; i++)
            {
                MyCamera.MV_CC_DEVICE_INFO device = (MyCamera.MV_CC_DEVICE_INFO)Marshal.PtrToStructure(m_stDeviceList.pDeviceInfo[i], typeof(MyCamera.MV_CC_DEVICE_INFO));
                if (device.nTLayerType == MyCamera.MV_GIGE_DEVICE)
                {
                    IntPtr buffer = Marshal.UnsafeAddrOfPinnedArrayElement(device.SpecialInfo.stGigEInfo, 0);
                    //MyCamera.MV_GIGE_DEVICE_INFO gigeInfo = (MyCamera.MV_GIGE_DEVICE_INFO)MyCamera.ByteToStruct(device.SpecialInfo.stGigEInfo, typeof(MyCamera.MV_GIGE_DEVICE_INFO));
                    MyCamera.MV_GIGE_DEVICE_INFO gigeInfo = (MyCamera.MV_GIGE_DEVICE_INFO)Marshal.PtrToStructure(buffer, typeof(MyCamera.MV_GIGE_DEVICE_INFO));
                    this.Cam_name = gigeInfo.chUserDefinedName;
                }
                else if (device.nTLayerType == MyCamera.MV_USB_DEVICE)
                {
                    IntPtr buffer = Marshal.UnsafeAddrOfPinnedArrayElement(device.SpecialInfo.stUsb3VInfo, 0);
                    MyCamera.MV_USB3_DEVICE_INFO usbInfo = (MyCamera.MV_USB3_DEVICE_INFO)Marshal.PtrToStructure(buffer, typeof(MyCamera.MV_USB3_DEVICE_INFO));
                    //MyCamera.MV_USB3_DEVICE_INFO usbInfo = (MyCamera.MV_USB3_DEVICE_INFO)MyCamera.ByteToStruct(device.SpecialInfo.stUsb3VInfo, typeof(MyCamera.MV_USB3_DEVICE_INFO));
                    this.Cam_name = usbInfo.chUserDefinedName;
                }
                if (Cam_Name == this.Cam_name)
                {
                    //打開設(shè)備
                    if (null == m_MyCamera)
                    {
                        m_MyCamera = new MyCamera();
                    }                   
                    //創(chuàng)建設(shè)備 
                    nRet = m_MyCamera.MV_CC_CreateDevice_NET(ref device);
                    if (MyCamera.MV_OK != nRet)
                    {
                        return false;
                    }
                    //打開設(shè)備 
                    nRet = m_MyCamera.MV_CC_OpenDevice_NET();
                    if (MyCamera.MV_OK != nRet)
                    {
                        //打開設(shè)備失敗 銷毀設(shè)備句柄 
                        m_MyCamera.MV_CC_DestroyDevice_NET();
                        return false;
                    }
                    // 探測(cè)網(wǎng)絡(luò)最佳包大小(只對(duì)GigE相機(jī)有效)
                    if (device.nTLayerType == MyCamera.MV_GIGE_DEVICE)
                    {
                        int nPacketSize = m_MyCamera.MV_CC_GetOptimalPacketSize_NET();
                        if (nPacketSize > 0)
                        {
                            m_MyCamera.MV_CC_SetIntValue_NET("GevSCPSPacketSize", (uint)nPacketSize);                            
                        }
                    }
                    //設(shè)置相機(jī)模式
                    //連續(xù)采集
                    m_MyCamera.MV_CC_SetEnumValue_NET("AcquisitionMode", (uint)MyCamera.MV_CAM_ACQUISITION_MODE.MV_ACQ_MODE_CONTINUOUS);
                    //觸發(fā)模式
                    m_MyCamera.MV_CC_SetEnumValue_NET("TriggerMode", (uint)MyCamera.MV_CAM_TRIGGER_MODE.MV_TRIGGER_MODE_ON);
                    //設(shè)置圖像緩存節(jié)點(diǎn)個(gè)數(shù)
                    m_MyCamera.MV_CC_SetImageNodeNum_NET(8);
                    //注冊(cè)圖像回調(diào)函數(shù)
                    ImageCallback = new MyCamera.cbOutputExdelegate(GrabImage);
                    //來設(shè)置數(shù)據(jù)回調(diào)函數(shù)。
                    nRet =m_MyCamera.MV_CC_RegisterImageCallBackEx_NET(ImageCallback, IntPtr.Zero);
                    if (MyCamera.MV_OK != nRet)
                    {
                        return false;
                    }
                    //開啟采集
                    m_MyCamera.MV_CC_StartGrabbing_NET();
                    return true;
                }
            }
            return false;
        }     
        /// <summary>
        /// 圖像注冊(cè)事件
        /// </summary>
        /// <param name="pData"></param>
        /// <param name="pFrameInfo"></param>
        /// <param name="pUser"></param>
        private void GrabImage(IntPtr pData, ref MyCamera.MV_FRAME_OUT_INFO_EX pFrameInfo, IntPtr pUser)
        {
            byte[] SrcData = new byte[pFrameInfo.nHeight * pFrameInfo.nWidth];//圖像數(shù)據(jù)
          //  Marshal.Copy(pData, SrcData, 0, (int)pFrameInfo.nFrameLen);
            HObject Hobj;
            HOperatorSet.GenEmptyObj(out Hobj);
            byte[] imageData = IntPtr2Bytes(pData, (int)(pFrameInfo.nFrameLen));
            uint imageLen = pFrameInfo.nFrameLen;
            uint imageWidth = pFrameInfo.nWidth;
            uint imageHight = pFrameInfo.nHeight;
            if (IsMonoPixelFormat(pFrameInfo.enPixelType))//黑白
            {
                Hobj.Dispose();
                HOperatorSet.GenImage1(out Hobj, "byte", pFrameInfo.nWidth, pFrameInfo.nHeight, pData);
            }
            else
            {
                if (pFrameInfo.enPixelType == MyCamera.MvGvspPixelType.PixelType_Gvsp_RGB8_Packed)//RGB
                {
                    Hobj.Dispose();
                    HOperatorSet.GenImageInterleaved(out  Hobj, pData, "rgb", (int)pFrameInfo.nWidth, (int)pFrameInfo.nHeight, 0, "byte", (int)pFrameInfo.nWidth, (int)pFrameInfo.nHeight, 0, 0, -1, 0);
                }
                else
                {                   
                    if (pBufForSaveImage == IntPtr.Zero)
                    {
                        pBufForSaveImage = Marshal.AllocHGlobal((int)(pFrameInfo.nWidth * pFrameInfo.nHeight * 3 + 2048));
                    }
                    MyCamera.MV_PIXEL_CONVERT_PARAM stConverPixelParam = new MyCamera.MV_PIXEL_CONVERT_PARAM();
                    stConverPixelParam.nWidth = pFrameInfo.nWidth; 
                    stConverPixelParam.nHeight = pFrameInfo.nHeight;
                    stConverPixelParam.pSrcData = pData;
                    stConverPixelParam.nSrcDataLen = pFrameInfo.nFrameLen;
                    stConverPixelParam.enSrcPixelType = pFrameInfo.enPixelType;
                    stConverPixelParam.enDstPixelType = MyCamera.MvGvspPixelType.PixelType_Gvsp_RGB8_Packed;//在此處選擇需要轉(zhuǎn)換的目標(biāo)類型
                    stConverPixelParam.pDstBuffer = pBufForSaveImage;
                    stConverPixelParam.nDstBufferSize = (uint)(pFrameInfo.nWidth * pFrameInfo.nHeight * 3 + 2048);
                    m_MyCamera.MV_CC_ConvertPixelType_NET(ref stConverPixelParam);
                    Hobj.Dispose();
                    HOperatorSet.GenImageInterleaved(out  Hobj, pBufForSaveImage, "rgb", (int)pFrameInfo.nWidth, (int)pFrameInfo.nHeight, 0, "byte", (int)pFrameInfo.nWidth, (int)pFrameInfo.nHeight, 0, 0, -1, 0);
                }               
            }
            if (Hobj.CountObj() > 0)
            {
                Image_Delegate?.Invoke(Cam_name, Hobj?.Clone());
            }           
            Hobj?.Dispose();            
            System.GC.Collect();
        }
        public static byte[] IntPtr2Bytes(IntPtr ptr, int size)
        {
 
            if (ptr == IntPtr.Zero)
            {
                return null;
            }
 
            byte[] bytes = new byte[size];
            Marshal.Copy(ptr, bytes, 0, size);
            return bytes;
        }
        /// <summary>
        /// 黑白圖像
        /// </summary>
        /// <param name="enType"></param>
        /// <returns></returns>
        private bool IsMonoPixelFormat(MyCamera.MvGvspPixelType enType)
        {
            switch (enType)
            {
                case MyCamera.MvGvspPixelType.PixelType_Gvsp_Mono8:
                case MyCamera.MvGvspPixelType.PixelType_Gvsp_Mono10:
                case MyCamera.MvGvspPixelType.PixelType_Gvsp_Mono10_Packed:
                case MyCamera.MvGvspPixelType.PixelType_Gvsp_Mono12:
                case MyCamera.MvGvspPixelType.PixelType_Gvsp_Mono12_Packed:
                    return true;
                default:
                    return false;
            }
        }
        /// <summary>
        /// 彩色圖像
        /// </summary>
        /// <param name="enType"></param>
        /// <returns></returns>
        private bool IsColorPixelFormat(MyCamera.MvGvspPixelType enType)
        {
            switch (enType)
            {
                case MyCamera.MvGvspPixelType.PixelType_Gvsp_RGB8_Packed:
                case MyCamera.MvGvspPixelType.PixelType_Gvsp_BGR8_Packed:
                case MyCamera.MvGvspPixelType.PixelType_Gvsp_RGBA8_Packed:
                case MyCamera.MvGvspPixelType.PixelType_Gvsp_BGRA8_Packed:
                case MyCamera.MvGvspPixelType.PixelType_Gvsp_YUV422_Packed:
                case MyCamera.MvGvspPixelType.PixelType_Gvsp_YUV422_YUYV_Packed:
                case MyCamera.MvGvspPixelType.PixelType_Gvsp_BayerGR8:
                case MyCamera.MvGvspPixelType.PixelType_Gvsp_BayerRG8:
                case MyCamera.MvGvspPixelType.PixelType_Gvsp_BayerGB8:
                case MyCamera.MvGvspPixelType.PixelType_Gvsp_BayerBG8:
                case MyCamera.MvGvspPixelType.PixelType_Gvsp_BayerGB10:
                case MyCamera.MvGvspPixelType.PixelType_Gvsp_BayerGB10_Packed:
                case MyCamera.MvGvspPixelType.PixelType_Gvsp_BayerBG10:
                case MyCamera.MvGvspPixelType.PixelType_Gvsp_BayerBG10_Packed:
                case MyCamera.MvGvspPixelType.PixelType_Gvsp_BayerRG10:
                case MyCamera.MvGvspPixelType.PixelType_Gvsp_BayerRG10_Packed:
                case MyCamera.MvGvspPixelType.PixelType_Gvsp_BayerGR10:
                case MyCamera.MvGvspPixelType.PixelType_Gvsp_BayerGR10_Packed:
                case MyCamera.MvGvspPixelType.PixelType_Gvsp_BayerGB12:
                case MyCamera.MvGvspPixelType.PixelType_Gvsp_BayerGB12_Packed:
                case MyCamera.MvGvspPixelType.PixelType_Gvsp_BayerBG12:
                case MyCamera.MvGvspPixelType.PixelType_Gvsp_BayerBG12_Packed:
                case MyCamera.MvGvspPixelType.PixelType_Gvsp_BayerRG12:
                case MyCamera.MvGvspPixelType.PixelType_Gvsp_BayerRG12_Packed:
                case MyCamera.MvGvspPixelType.PixelType_Gvsp_BayerGR12:
                case MyCamera.MvGvspPixelType.PixelType_Gvsp_BayerGR12_Packed:
                    return true;
                default:
                    return false;
            }
        }
        /// <summary>
        /// 設(shè)置曝光
        /// </summary>
        /// <param name="Value"></param>
        /// <returns></returns>
        public override double SetExposureTime(double Value)
        {
            m_MyCamera.MV_CC_SetEnumValue_NET("ExposureAuto", 0);
            MyCamera.MVCC_FLOATVALUE stParam = new MyCamera.MVCC_FLOATVALUE();
            m_MyCamera.MV_CC_GetFloatValue_NET("ExposureTime", ref stParam);
            if (Value <= stParam.fMax && Value >= stParam.fMin)
            {
                m_MyCamera.MV_CC_SetFloatValue_NET("ExposureTime", (float)Value);
            }
            return stParam.fCurValue;
        }
        /// <summary>
        /// 設(shè)置增益
        /// </summary>
        /// <param name="Value"></param>
        /// <returns></returns>
        public override double SetGainRaw(double Value)
        {
            m_MyCamera.MV_CC_SetEnumValue_NET("GainAuto", 0);
            MyCamera.MVCC_FLOATVALUE stParam = new MyCamera.MVCC_FLOATVALUE();
            m_MyCamera.MV_CC_GetFloatValue_NET("Gain", ref stParam);
            if (Value <= stParam.fMax && Value >= stParam.fMin)
            {
                m_MyCamera.MV_CC_SetFloatValue_NET("Gain", (float)Value);
            }
            return stParam.fCurValue;
        }
        /// <summary>
        /// 獲取觸發(fā)模式
        /// </summary>
        /// <param name="mode"></param>
        public override void SetTriggerMode(TriggerMode mode)
        {
            if (mode == TriggerMode.Off)
            {
                m_MyCamera.MV_CC_SetEnumValue_NET("TriggerMode", (uint)MyCamera.MV_CAM_TRIGGER_MODE.MV_TRIGGER_MODE_OFF);
            }
            else
            {
                m_MyCamera.MV_CC_SetEnumValue_NET("TriggerMode", (uint)MyCamera.MV_CAM_TRIGGER_MODE.MV_TRIGGER_MODE_ON);
            }
        }
        /// <summary>
        /// 設(shè)置觸發(fā)源
        /// </summary>
        /// <param name="source"></param>
        public override void SetTriggerSource(TriggerSource source)
        {
            m_MyCamera.MV_CC_SetEnumValue_NET("TriggerMode", (uint)MyCamera.MV_CAM_TRIGGER_MODE.MV_TRIGGER_MODE_ON);
            switch (source)
            {
                case TriggerSource.Line1:
                    m_MyCamera.MV_CC_SetEnumValue_NET("TriggerSource", (uint)MyCamera.MV_CAM_TRIGGER_SOURCE.MV_TRIGGER_SOURCE_LINE0);
                    break;
                case TriggerSource.Line2:
                    m_MyCamera.MV_CC_SetEnumValue_NET("TriggerSource", (uint)MyCamera.MV_CAM_TRIGGER_SOURCE.MV_TRIGGER_SOURCE_LINE1);
                    break;
                case TriggerSource.Software:
                    m_MyCamera.MV_CC_SetEnumValue_NET("TriggerSource", (uint)MyCamera.MV_CAM_TRIGGER_SOURCE.MV_TRIGGER_SOURCE_SOFTWARE);
                    break;
                default:
                    break;
            }
        }
        /// <summary>
        /// 軟觸發(fā)一次
        /// </summary>
        public override bool TriggerSoftware()
        {
            if (m_MyCamera == null) return false;
            if (GetTriggerMode()==TriggerMode.Off)
            {
                m_MyCamera.MV_CC_SetEnumValue_NET("TriggerMode", (uint)MyCamera.MV_CAM_TRIGGER_MODE.MV_TRIGGER_MODE_ON);
                m_MyCamera.MV_CC_SetEnumValue_NET("TriggerSource", (uint)MyCamera.MV_CAM_TRIGGER_SOURCE.MV_TRIGGER_SOURCE_SOFTWARE);
            }           
            m_MyCamera.MV_CC_SetCommandValue_NET("TriggerSoftware");
            return true;
        }
    }

C#??低暉o法加載DLL“..\bin\HCNetSDK.dll”

項(xiàng)目場景

c#海康威視:System.DllNotFoundException:“無法加載 DLL“…\bin\HCNetSDK.dll”: 找不到指定的模塊。 (異常來自 HRESULT:0x8007007E)。”

問題描述

將??低暤腟DK直接復(fù)制到我的項(xiàng)目中時(shí),使用到SDK中的方法就出現(xiàn)這個(gè)異常。

將demo里的dll放在bin文件夾和bin\Debug文件夾里時(shí)也會(huì)出錯(cuò)。

在這里插入圖片描述

原因分析

這個(gè)肯定是路徑出錯(cuò)了,不然不會(huì)報(bào)這個(gè)找不到指定模塊的異常。

解決方案

在代碼中選中方法函數(shù),右鍵轉(zhuǎn)到定義:

在這里插入圖片描述

將\bin\HCNetSDK.dll改成\Debug\HCNetSDK,這樣就不會(huì)報(bào)錯(cuò)了。

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • WPF自定義控件實(shí)現(xiàn)ItemsControl魚眼效果

    WPF自定義控件實(shí)現(xiàn)ItemsControl魚眼效果

    這篇文章主要為大家詳細(xì)介紹了WPF如何通過自定義控件實(shí)現(xiàn)ItemsControl魚眼效果,文中的示例代碼講解詳細(xì),需要的可以參考一下
    2024-01-01
  • C#中的GDI+圖像編程詳解

    C#中的GDI+圖像編程詳解

    本文詳細(xì)講解了C#中的GDI+圖像編程,文中通過示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-05-05
  • WPF實(shí)現(xiàn)獲取攝像頭幀圖的代碼示例

    WPF實(shí)現(xiàn)獲取攝像頭幀圖的代碼示例

    這篇文章主要介紹了如何利用WPF實(shí)現(xiàn)獲取攝像頭幀圖的代碼示例,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)或工作有一定幫助,感興趣的可以參考一下
    2024-02-02
  • C#實(shí)現(xiàn)應(yīng)用程序的監(jiān)控與調(diào)試的示例代碼

    C#實(shí)現(xiàn)應(yīng)用程序的監(jiān)控與調(diào)試的示例代碼

    日志記錄是軟件開發(fā)中不可或缺的功能,它能幫助開發(fā)者在應(yīng)用程序運(yùn)行時(shí)記錄重要信息,本文就來介紹一下常用日志記錄功能以及常用的日志庫,感興趣的可以了解一下
    2024-03-03
  • WPF自動(dòng)隱藏的消息框的實(shí)例代碼

    WPF自動(dòng)隱藏的消息框的實(shí)例代碼

    本文給大家介紹WPF自動(dòng)隱藏的消息框?qū)嵗a,當(dāng)鼠標(biāo)放上去將一直顯示,移開動(dòng)畫繼續(xù),提供normal和error兩種邊框。非常不錯(cuò),具有參考借鑒價(jià)值,感興趣的朋友一起看下吧
    2016-07-07
  • unity 文件流讀取圖片與www讀取圖片的區(qū)別介紹

    unity 文件流讀取圖片與www讀取圖片的區(qū)別介紹

    這篇文章主要介紹了unity 文件流讀取圖片與www讀取圖片的對(duì)比分析,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2021-04-04
  • Unity實(shí)現(xiàn)物體沿自身的任意軸向旋轉(zhuǎn)

    Unity實(shí)現(xiàn)物體沿自身的任意軸向旋轉(zhuǎn)

    這篇文章主要為大家詳細(xì)介紹了Unity實(shí)現(xiàn)物體沿自身的任意軸向旋轉(zhuǎn),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-01-01
  • c# 9.0新特性——模塊初始化器

    c# 9.0新特性——模塊初始化器

    這篇文章主要介紹了c# 9.0新特性——模塊初始化器的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)c#9.0,感興趣的朋友可以了解下
    2020-11-11
  • C#實(shí)現(xiàn)在前端網(wǎng)頁彈出警告對(duì)話框(alert)的方法

    C#實(shí)現(xiàn)在前端網(wǎng)頁彈出警告對(duì)話框(alert)的方法

    這篇文章主要介紹了C#實(shí)現(xiàn)在前端網(wǎng)頁彈出警告對(duì)話框(alert)的方法,涉及C#通過自定義函數(shù)調(diào)用window.alert方法彈出對(duì)話框的技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-04-04
  • C#/VB.NET 給Excel添加、刪除數(shù)字簽名的方法

    C#/VB.NET 給Excel添加、刪除數(shù)字簽名的方法

    這篇文章主要介紹了C#/VB.NET 給Excel添加、刪除數(shù)字簽名的方法,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-11-11

最新評(píng)論