
注意使用这个关闭模式。使用jFrame.pack(),替换jFrame.setSize(800,400)。可以很好的包裹住界面。选择表单布局。使用这种布局需要导入依赖。表格位置的移动。调节表单的每部分的大小。对行列的添加与删除。使用preview查看窗体。字体的选择,设置LabelFor。文本域外边距的设置。调节文本域大小。设置文本域的不可编辑。文本域内容的预先定义。使按钮占满区域。按钮事件。添加manubar组件。菜单的manu和manuItem手动添加,这种只能执行main函数才能看到,使用preview是看不到的。通过卡片Card布局实现界面切换。不使用可视化的代码。card的可替换部分使用可视化进行组装,而主要页面(包括菜单栏和替换部分)使用非可视化,手动进行构建。打成可执行jar包。
方法一:WINDOWS API画法
//获取要绘制的控件句柄
Image img = GetWindow(this.tabPage12.Handle)
//在母容器上创建图形对象
Graphics gOut = mOut.pnlOut.CreateGraphics()
//在指定位置按指定大小绘出image
gOut.DrawImage((Image)img, form1.pnlImage.DisplayRectangle, this.tabPage12.DisplayRectangle, GraphicsUnit.Pixel)
//释放图形对象所有资源
gOut.Dispose()
img.Dispose()
GC.Collect()
form1.pnlImage.BringToFront()
#region 截图函数
[DllImport("gdi32.dll")]
public static extern IntPtr CreateDC(
string lpszDriver, // driver name驱动名
string lpszDevice, // device name设备名
string lpszOutput, // not usedshould be NULL
IntPtr lpInitData // optional printer data
)
[DllImport("gdi32.dll")]
public static extern int BitBlt(
IntPtr hdcDest, // handle to destination DC目标设备的句柄
int nXDest, // x-coord of destination upper-left corner目标对象的左上角的X坐标
int nYDest, // y-coord of destination upper-left corner目标对象的左上角的Y坐标
int nWidth, // width of destination rectangle目标对象的矩形宽度
int nHeight, // height of destination rectangle目标对象的矩形长度
IntPtr hdcSrc, // handle to source DC源设备的句柄
int nXSrc, // x-coordinate of source upper-left corner源对象的左上角的X坐标
int nYSrc, // y-coordinate of source upper-left corner源对象的左上角的Y坐标
UInt32 dwRop // raster operation code光栅的 *** 作值
)
[DllImport("gdi32.dll")]
public static extern IntPtr CreateCompatibleDC(
IntPtr hdc // handle to DC
)
[DllImport("gdi32.dll")]
public static extern IntPtr CreateCompatibleBitmap(
IntPtr hdc, // handle to DC
int nWidth, // width of bitmap, in pixels
int nHeight // height of bitmap, in pixels
)
[DllImport("gdi32.dll")]
public static extern IntPtr SelectObject(
IntPtr hdc, // handle to DC
IntPtr hgdiobj // handle to object
)
[DllImport("gdi32.dll")]
public static extern int DeleteDC(
IntPtr hdc // handle to DC
)
[DllImport("user32.dll")]
public static extern bool PrintWindow(
IntPtr hwnd, // Window to copy,Handle to the window that will be copied.
IntPtr hdcBlt, // HDC to print into,Handle to the device context.
UInt32 nFlags // Optional flags,Specifies the drawing options. It can be one of the following values.
)
[DllImport("user32.dll")]
public static extern IntPtr GetWindowDC(
IntPtr hwnd
)
public Bitmap GetWindow(IntPtr hWnd)
{
IntPtr hscrdc = GetWindowDC(hWnd)
Control control = Control.FromHandle(hWnd)
IntPtr hbitmap = CreateCompatibleBitmap(hscrdc, control.Width, control.Height)
IntPtr hmemdc = CreateCompatibleDC(hscrdc)
SelectObject(hmemdc, hbitmap)
PrintWindow(hWnd, hmemdc, 0)
Bitmap bmp = Bitmap.FromHbitmap(hbitmap)
DeleteDC(hscrdc)//删除用过的对象
DeleteDC(hmemdc)//删除用过的对象
return bmp
}
#endregion
方法二、给background赋值
Bitmap bmp = new Bitmap(this.tabPage12.Width, this.tabPage12.Height)
//将控件区域显呈到指定位图
this.tabPage12.DrawToBitmap(bmp, this.tabPage12.DisplayRectangle)
form1.pnlImage.BackgroundImage = (Image)bmp
/* 分屏显示座席 */
form1.pnlImage.BackColor = Color.White
form1.pnlImage.BringToFront()
方法三、将某个屏幕位置拷贝到image
Image img = new Bitmap(tabPage13.Width, tabPage13.Height)
Graphics g = Graphics.FromImage(img)
g.CopyFromScreen(Obj.PointToScreen(Point.Empty), Point.Empty, tabPage13.Size)
IntPtr dc1 = g.GetHdc()
g.ReleaseHdc(dc1)
form1.pnlImage.BackgroundImage = img
form1.pnlImage.BringToFront()
Private Sub Command1_Click()Dim x0 As Integer, y0 As Integer
Dim a(10, 2) As Integer
Dim i As Integer, j As Integer
x0 = 2000
y0 = 1500
For i = 0 To 10
a(i, 1) = 1500 * Cos(36 * i / 180 * 3.14159265)
a(i, 2) = 1500 * Sin(36 * i / 180 * 3.14159265)
Next
For i = 1 To 10
For j = 1 To i - 1
Line (x0 + a(i, 1), y0 + a(i, 2))-(x0 + a(j, 1), y0 + a(j, 2))
Next
Next
End Sub
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)