建议先将此程序运行,然后打包成java文件包,这样就可以直接在电脑屏幕上点击运行,就相当于在电脑屏幕上画画了,这个程序只能画出各种颜色的实心圆与空心圆。
package Fengxing;
import java.awt.AWTException;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.Robot;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionListener;
import java.util.Random;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;
public class Test2 extends JFrame {
JButton jb;
Image image;
Graphics g;
int i = 0, o = 0, c = 0;
static int j = 0;
int x;
int y;
// serialVersionUID作用是序列化时保持版本的兼容性,即在版本升级时反序列化仍保持对象的唯一性。
private static final long serialVersionUID = 1L;
static BackPane pane;
public Test2() {
setDefaultCloseOperation(3);
setUndecorated(true);
setSize(1366, 750);
setLocationRelativeTo(null);
// 截图函数
try {
Robot robot = new Robot();
// 对在窗体所在位置截屏
image = robot.createScreenCapture(getBounds());
} catch (AWTException e) {
e.printStackTrace();
}
pane = new BackPane();
jb = new JButton("Start");
pane.add(jb);
setVisible(true);
g = this.getGraphics();
jb.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
if (e.getActionCommand().equals("Start")) {
i = 1;
o = 0;
c = 0;
}
}
});
this.addMouseMotionListener(new MouseMotionListener() {
@Override
public void mouseDragged(MouseEvent e) {
x = e.getX();
y = e.getY();
if (1 == i) { // 得到鼠标当前的坐标
if (1 == c) {
Random rand = new Random();
// 每次调用时都可以随机选取一种颜色
g.setColor(new Color(rand.nextInt(256), rand
.nextInt(256), rand.nextInt(256)));
} else {
g.setColor(Color.BLACK);
}
if (1 == o) {
g.drawOval(x, y, 40, 40);
} else {
// 画一个实心的圆圈
g.fillOval(x, y, 40, 60);
}
}
}
@Override
public void mouseMoved(MouseEvent e) {
}
});
JButton jb1 = new JButton("Clean");
jb1.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// 清空屏幕
pane.getGraphics().clearRect(0, 0, 1500, 1500);
// 清空后再重画一个面板
new BackPane().paintComponent(g);
// 另i为0,再一次点击开始时才可以继续画
i = 0;
}
});
pane.add(jb1);
JButton jb2 = new JButton("Exit");
jb2.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
if (e.getActionCommand().equals("Exit")) {
int i = JOptionPane.showConfirmDialog(null, "确定要退出该程序?");
if (i == 0) {
System.exit(0);
}
}
}
});
pane.add(jb2);
JButton jb3 = new JButton("Oval");
jb3.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
if (e.getActionCommand().equals("Oval")) {
g.drawOval(x, y, 40, 40);
o = 1;
c = 0;
}
}
});
pane.add(jb3);
JButton jb4 = new JButton("Colorful");
jb4.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
if (e.getActionCommand().equals("Colorful")) {
c = 1;
}
}
});
pane.add(jb4);
setContentPane(pane);
}
class BackPane extends JPanel {
private static final long serialVersionUID = 1L;
@Override
// 定义一个在截取的屏幕上绘画的函数
protected void paintComponent(Graphics g) {
// 调用父类的方法
super.paintComponent(g);
if (image != null) {
g.drawImage(image, 0, 0, null);
}
}
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
new Test2();
}
});
}
}
分享到:
相关推荐
在当今数字化时代,手写功能已经从传统的纸笔逐渐拓展到电子设备上,桌面手写小程序就是这样一种创新应用。它旨在为用户提供一个在电脑桌面上模拟真实手写体验的平台,让人们在数字化环境中也能享受到手写的乐趣与...
【桌面透明时钟小程序】是一款基于C++编程语言开发的小应用程序,它能在用户的桌面上创建一个透明的时钟显示,为用户提供便捷的时间查看方式。这个程序的独特之处在于其透明特性,使得用户可以在查看时间的同时,不...
在这个绘图小程序中,我们创建一个Windows Form作为用户界面,用户可以在其上进行绘图。 3. **Paint事件**:Windows Forms中的控件,如Form,有一个Paint事件,当控件需要重绘时触发。我们可以在这个事件的处理函数...
这个压缩包文件“易语言源码把桌面图标排列成圆形的小程序.rar”包含了一个使用易语言编写的程序,该程序可以将用户的桌面图标排列成圆形,为用户提供了一种独特的桌面布局方式。 首先,我们需要理解易语言的基本...
".NET 小程序"标签意味着该程序是构建在.NET框架之上,这是一个由微软开发的全面的开发平台,支持多种语言,如VB.NET,用于构建桌面和Web应用。小程序的概念暗示它可能相对较小、简洁,但功能实用,便于理解和学习。...
圣诞节可直接双击打开,悬浮于电脑桌面,充满节日气氛
标题中的“在桌面上打字效果,可以用来勾引小女生呦”暗示我们要讨论的是一个创建特殊视觉效果的程序,即模拟文字直接在桌面上输入的特效。这种效果通常是通过编程实现,特别是在Windows环境下,利用.NET Framework...
这款小程序专注于提供基本的绘图功能,允许用户在屏幕上自由绘制线条、形状等元素,以满足简单的图形创作需求。 在技术实现上,该程序主要利用了Java的Swing库,Swing是Java Foundation Classes (JFC) 的一部分,...
这个程序的功能可能是实时地在用户桌面上显示指定的文字信息,即使其他应用程序正在运行,也能确保文字的清晰可见。这样的程序在某些特定场景下,如通知、提示或者调试时,可能会非常有用。 首先,我们需要理解的是...
4. **控制打印范围**:在描述中提到的是“指定的控件”,这意味着这个小程序可能允许开发者选择只打印窗体上的某一部分,而不是整个窗体。这通常通过在OnPrintPage事件处理程序中精确控制Graphics对象的绘图区域来...
通过以上步骤,我们可以创建一个简单的桌面绘图程序,允许用户在桌面上画出各种形状和文字。然而,实际应用中可能还需要考虑更多细节,比如错误处理、用户交互优化、保存和加载绘图内容等。在编程过程中,对C++的...
这个程序能够实现在用户的桌面上显示一个实时更新的时钟,为用户提供方便的时间查看功能。对于初学者和有经验的开发者来说,掌握这项技能都是非常有价值的。 首先,VC++是微软公司提供的一个集成开发环境,主要用于...
【标题】"一段桌面上飘雪的程序C++(转载)"所涉及的知识点主要集中在C++编程语言和计算机图形学领域,特别是如何利用C++实现动态桌面效果。以下是对这些知识点的详细解释: 1. **C++编程基础**: - C++是一种通用...
在IT领域,MFC(Microsoft Foundation Classes)是微软提供的一套C++库,用于构建Windows应用程序,特别是桌面GUI(图形用户界面)应用。MFC基于面向对象编程,它封装了Windows API,使得开发者能更方便地创建用户...
**描述分析:** 描述提到这个程序是“MFC小程序”,意味着它是一个小型的、功能集中的应用,适合初学者学习。它特别强调了“功能齐全”和“代码注释详细”,这意味着开发者不仅实现了基本的时钟功能,还可能包含了...
屏幕截屏图像捕捉小程序是利用Microsoft Visual C++ 6.0(简称VC6.0)开发的一款实用工具,主要用于在Windows操作系统中捕获屏幕上的图像。这个小程序具有简单易用的特点,用户可以快速方便地对电脑屏幕进行截图,并...
而“程序窗口嵌入桌面”则是指让程序窗口看起来像是直接在桌面上运行,而不是像普通窗口那样悬浮于桌面之上。这种效果在某些特殊应用中很有用,比如屏幕保护程序或特定的桌面增强工具。 在易语言中实现这个功能,...
对于桌面应用程序来说,这种特性尤其重要,因为用户可能在不同的显示器上使用应用,SVG可以确保图标、图形和其他视觉元素始终清晰。 在SVG的使用中,开发者可以利用XML的结构化特性来创建、编辑和操作图形。例如,...
在这个连连看小程序中,CWinApp可能被用来设置程序入口点,处理启动和关闭流程。 连连看游戏的基本原理是将相同的图片对连接起来,直到所有匹配的对都被消除。这个程序可能使用了一个二维数组或某种数据结构来存储...
标题中的“趣味源码一个桌面上的小蝴蝶”指的是一个编程项目,该项目旨在为用户提供一个桌面应用,该应用能够在用户的电脑桌面上显示出一只飞翔的小蝴蝶,为用户带来视觉上的娱乐效果。这种类型的程序通常使用图形...