⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gapidisplay.cs.svn-base

📁 这是一个windows mobile程序能够实现窗体运货效果非常不错
💻 SVN-BASE
字号:
using System;
using System.Runtime.InteropServices;
using System.Drawing;

namespace Aspecto.GapiDrawNet
{
	/// <summary>
	/// Summary description for GapiDisplay.
	/// </summary>
	public class GapiDisplay : GapiSurface
	{

		public GapiDisplay(IntPtr gapiDraw) : base(gapiDraw)
		{
            unmanagedGapiObject = GdNet.CGapiDisplay_Create(gapiDraw);
            backBuffer = new GapiSurface(gapiDraw);
		}

		override public void Dispose()
		{
			IntPtr display = unmanagedGapiObject;
			unmanagedGapiObject = IntPtr.Zero;
			GdNet.CGapiDisplay_Destroy(display);
		}

		private GapiSurface backBuffer;
		public GapiSurface BackBuffer
		{
			get { return backBuffer; }
		}
		
		//public static extern UInt32 CGapiDisplay_OpenDisplay(IntPtr pDisplay, IntPtr hWnd, int dwFlags, int dwWidth, int dwHeight, int dwZoomWidth, int dwZoomHeight, int dwBPP, int dwHz);
		public void OpenDisplay(IntPtr hWnd, OpenDisplayOptions flags)
		{
			GapiUtility.RaiseExceptionOnError (GdNet.CGapiDisplay_OpenDisplay(unmanagedGapiObject, (int)flags, hWnd, 240,320, 0, 0, 16, 0));
			GetBackBuffer();
		}

		//public static extern UInt32 CGapiDisplay_OpenDisplay(IntPtr pDisplay, IntPtr hWnd, int dwFlags, int dwWidth, int dwHeight, int dwZoomWidth, int dwZoomHeight, int dwBPP, int dwHz);
		public void OpenDisplay(IntPtr hWnd, OpenDisplayOptions flags, int dwWidth, int dwHeight, int dwZoomWidth, int dwZoomHeight, int dwBPP, int dwHz)
		{
			GapiUtility.RaiseExceptionOnError (GdNet.CGapiDisplay_OpenDisplay(unmanagedGapiObject, (int)flags, hWnd, dwWidth,dwHeight, dwZoomWidth, dwZoomHeight, dwBPP, dwHz));
			GetBackBuffer();
		}
		public void OpenDisplay(IntPtr hWnd)
		{
			GapiUtility.RaiseExceptionOnError (GdNet.CGapiDisplay_OpenDisplay(unmanagedGapiObject, 0, hWnd, 240,320, 0, 0, 16, 0));
			GetBackBuffer();
		}

		// public static extern UInt32 CGapiDisplay_OpenDisplayByName(IntPtr pDisplay, string pWindow, int dwFlags, int dwWidth, int dwHeight, int dwZoomWidth, int dwZoomHeight, int dwBPP, int dwHz);
		public void OpenDisplay(string windowName, OpenDisplayOptions flags, int dwWidth, int dwHeight, int dwZoomWidth, int dwZoomHeight, int dwBPP, int dwHz)
		{
			GapiUtility.RaiseExceptionOnError (GdNet.CGapiDisplay_OpenDisplayByName(unmanagedGapiObject, (int)flags, windowName, dwWidth,dwHeight, dwZoomWidth, dwZoomHeight, dwBPP, dwHz));
			GetBackBuffer();
		}

		public void OpenDisplay(string windowName, OpenDisplayOptions flags)
		{
			GapiUtility.RaiseExceptionOnError (GdNet.CGapiDisplay_OpenDisplayByName(unmanagedGapiObject, (int)flags, windowName, 240,320, 0, 0, 16, 0));
			GetBackBuffer();
		}

		public void OpenDisplay(string windowName)
		{
			GapiUtility.RaiseExceptionOnError (GdNet.CGapiDisplay_OpenDisplayByName(unmanagedGapiObject, 0, windowName, 240,320, 0, 0, 16, 0));
			GetBackBuffer();
		}

		//		public static extern UInt32 CGapiDisplay_CloseDisplay (IntPtr pDisplay);
		public void CloseDisplay()
		{
			GapiUtility.RaiseExceptionOnError (GdNet.CGapiDisplay_CloseDisplay(unmanagedGapiObject));
			unmanagedGapiObject = IntPtr.Zero;
		}

		//		public static extern UInt32 CGapiDisplay_SetDisplayMode (IntPtr pDisplay, int dwMode);
		public void SetDisplayMode(DisplayMode mode)
		{
			SystemFontPtr = IntPtr.Zero;
			GapiUtility.RaiseExceptionOnError (GdNet.CGapiDisplay_SetDisplayMode(unmanagedGapiObject, (int)mode));
			GetBackBuffer();
		}

		public void CreateOffscreenDisplay(int x, int y) {
			GapiUtility.RaiseExceptionOnError (GdNet.CGapiDisplay_CreateOffscreenDisplay(unmanagedGapiObject,0, x,y));			
		}

		//		public static extern UInt32 CGapiDisplay_GetDisplayMode (IntPtr pDisplay, ref int pMode);
		public DisplayMode GetDisplayMode()
		{
			int mode = -1;
			GapiUtility.RaiseExceptionOnError (GdNet.CGapiDisplay_GetDisplayMode(unmanagedGapiObject, ref mode));
			return (DisplayMode)mode;

		}

		public DisplayMode Mode
		{
			get { return GetDisplayMode(); }
			set { SetDisplayMode(value); }
		}
		//		public static extern UInt32 CGapiDisplay_GetDisplayCaps (IntPtr pDisplay, ref int pCaps);
//		public DisplayCaps GetDisplayCaps()
//		{
//			int caps = -1;
//			GapiUtility.RaiseExceptionOnError (GdNet.CGapiDisplay_GetDisplayCaps(unmanagedGapiObject, ref caps));
//			return (DisplayCaps)caps;
//
//		}

		//		public static extern UInt32 CGapiDisplay_GetBackBuffer (IntPtr pDisplay, IntPtr pBackbuffer);
		public GapiSurface GetBackBuffer()
		{
			//IntPtr pBackbuffer = new IntPtr(0);
			backBuffer.GapiObject = GdNet.CGapiDisplay_GetBackBuffer(unmanagedGapiObject);
			return backBuffer;

		}


		public bool SurfacesAreLost()
		{
			return ((uint)GapiResults.GDERR_SURFACELOST) == GdNet.CGapiDisplay_SurfacesAreLost(unmanagedGapiObject);
		}

		public void  RestoreAllVideoSurfaces()
		{
			GdNet.CGapiDisplay_RestoreAllVideoSurfaces(unmanagedGapiObject);
		}

		//		public static extern UInt32 CGapiDisplay_Flip (IntPtr pDisplay);
		public void Flip()
		{
			uint hResult = GdNet.CGapiDisplay_Flip(unmanagedGapiObject);

			if(hResult == (uint)GapiResults.GD_OK){ return; }
			//if(hResult == (uint)GapiResults.GDERR_BACKBUFFERLOST)
			if(SurfacesAreLost()) 
			{
				RestoreAllVideoSurfaces();
				GetBackBuffer();
				return;
			}
			GapiUtility.RaiseExceptionOnError (hResult);
		}

        public void FlipCF(IntPtr ptr, Size rect)
        {
            IntPtr hdc;
            GdNet.CGapiSurface_GetDC(backBuffer.GapiObject, out hdc);
            uint hResult = GdNet.PaintOntoHandle(ptr, hdc,0,0, rect.Width,rect.Height);
            GdNet.CGapiSurface_ReleaseDC(backBuffer.GapiObject, hdc);

            if (hResult == (uint)GapiResults.GD_OK) { return; }
            //if(hResult == (uint)GapiResults.GDERR_BACKBUFFERLOST)
            if (SurfacesAreLost())
            {
                RestoreAllVideoSurfaces();
                GetBackBuffer();
                return;
            }
            GapiUtility.RaiseExceptionOnError(hResult);
        }


		//		public static extern UInt32 CGapiDisplay_SuspendDisplay (IntPtr pDisplay);
		public void SuspendDisplay()
		{
			if(unmanagedGapiObject != IntPtr.Zero)
			{
				GapiUtility.RaiseExceptionOnError (GdNet.CGapiDisplay_SuspendDisplay(unmanagedGapiObject));
			}
		}

		//		public static extern UInt32 CGapiDisplay_ResumeDisplay (IntPtr pDisplay);
		public void ResumeDisplay()
		{
			if(unmanagedGapiObject != IntPtr.Zero)
			{
				GapiUtility.RaiseExceptionOnError (GdNet.CGapiDisplay_ResumeDisplay(unmanagedGapiObject));
			}
		}

		//		public static extern UInt32 CGapiDisplay_DeviceToLogicalRect (IntPtr pDisplay, ref GDRect pRect);
		public void DeviceToLogicalRect(ref GDRect pRect)
		{
			GapiUtility.RaiseExceptionOnError (GdNet.CGapiDisplay_DeviceToLogicalRect(unmanagedGapiObject, ref pRect));
		}

		//		public static extern UInt32 CGapiDisplay_DeviceToLogicalPoint (IntPtr pDisplay, ref System.Drawing.Point pPoint);
		public void DeviceToLogicalPoint(ref System.Drawing.Point pPoint)
		{
			GapiUtility.RaiseExceptionOnError (GdNet.CGapiDisplay_DeviceToLogicalPoint(unmanagedGapiObject, ref pPoint));
		}

		static public IntPtr SystemFontPtr = IntPtr.Zero;

		public int RenderSystemFont(int dwColor)
		{
			int result = (int)GdNet.CGapiDisplay_RenderSystemFont(unmanagedGapiObject, dwColor);
			SystemFontPtr = GetSystemFontPtr();
			return result;
		}


		//		public static extern UInt32 CGapiSurface_DrawTextSystemFont(IntPtr pSurface, int dwX, int dwY, string pString, int dwTextFlags, ref int pWidth);
		public int GetTextWidth(string drawString)
		{
			int result;
			GdNet.CGapiBitmapFont_GetStringWidth (GetSystemFontPtr(), drawString, out result);
			return result;
		}
		
		public IntPtr GetSystemFontPtr()
		{
			return GdNet.CGapiDisplay_GetSystemFont (unmanagedGapiObject);
		}

		public IntPtr GetSystemFontBorderPtr()
		{
			return GdNet.CGapiDisplay_GetSystemFontBorder(unmanagedGapiObject);
		}

		

//		public int DrawText(int dwX, int dwY, string drawString, DrawTextOptions dwFlags)
//		{
//			int result;
//			/// TODO : Fix add overloads!
//			if(SystemFontPtr == IntPtr.Zero)
//			{
//				return (int)GapiResults.GDERR_INVALIDPARAMS;
//			}
//
//			result = (int)GdNet.CGapiSurface_DrawText(unmanagedGapiObject, dwX, dwY, drawString, GetSystemFontPtr(), (int)dwFlags,IntPtr.Zero, 0, IntPtr.Zero);			
//			return result; //result;
//		}

//		public int DrawText(int dwX, int dwY, string drawString, int dwColor, DrawTextOptions dwFlags)
//		{
//			int result;
//			/// TODO : Fix
//
//			//public static extern UInt32 CGapiSurface_DrawTextSystemFont(IntPtr pSurface, int dwX, int dwY, string pString, int dwTextFlags, out int pWidth);
//			// GdNet.CGapiSurface_DrawTextSystemFont(unmanagedGapiObject, dwX, dwY, drawString, (int)dwFlags, out result);
//			result = (int)GdNet.CGapiSurface_DrawText(unmanagedGapiObject, dwX, dwY, drawString, GetSystemFontPtr(), (int)dwFlags,IntPtr.Zero, 0, IntPtr.Zero);			}
//			return result;
//		}
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -