- 浏览: 1116408 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (349)
- javascript (28)
- objective-c&cocos2d (46)
- 开发备忘及常用java代码 (46)
- core java7学习笔记 (13)
- Mina (7)
- HTML5 (13)
- 系统集成项目管理工程师学习笔记 (10)
- 数据库系统原理学习笔记 (11)
- C++学习笔记 (10)
- C语言学习笔记 (5)
- 数据结构学习笔记 (4)
- 计算机网络原理学习笔记 (3)
- 计算机组成原理学习笔记 (2)
- 软件工程学习笔记 (6)
- 开发工具 (15)
- OSGI学习 (1)
- 学习笔记 (19)
- oracle (3)
- java tv (1)
- web server (5)
- javafx (1)
- 随笔 (8)
- 梦舞集 (4)
- 工作流 (3)
- 程序错误记录 (6)
- Windows (2)
- Linux (4)
- Git (1)
- 企业管理 (2)
- android (1)
- JVM (17)
- box2dweb (1)
- 操作系统学习笔记 (6)
- 英语学习 (1)
- Windows 8 应用商店 (1)
- Go语言 (1)
- docker (1)
- visualVM源码学习 (0)
- MariaDB (0)
- JAVA7 (2)
- 面向对象存储 (0)
- Hibernate (14)
- Spring (3)
- 项目构建 (0)
- 读源码学JAVA (0)
- mybatis (1)
- spring mvc (2)
- Javassist (0)
最新评论
-
白天看黑夜:
Apache Mina Server 2.0 中文参考手册(带 ...
Mina学习笔记二_基础 -
yjph83:
兄弟,你这个解决方案是什么什么啊?我现在遇到个问题跟你类似的! ...
Tomcat 8.0.11 移动端访问报400错误问题 -
comedsh:
你好,我也想为开源的做点事情,想让 tomcat-redis- ...
利用tomcat-redis-session-manager做session同步时自定义类对象属性保存不上的解决方法 -
bsr1983:
这个应该是浏览器内部设置的,你可以在Android上试一下别的 ...
javascript学习笔记八 -
787250527:
bsr1983 写道该值是浏览器内部的一个变量,只读的,不可修 ...
javascript学习笔记八
import java.awt.Color;
import java.awt.Graphics;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.util.ArrayList;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class DemoForDrawLineByKey extends JFrame {
/**
* <p>功能描述:[字段功能描述]</p>
*/
private static final long serialVersionUID = -8155745524182056025L;
private ArrayList<MyPoint> pointArrayList;
private int intNowX = 10;
private int intNowY = 10;
private MyPanelForDrawLine panel;
private int oldCode = 0;
private int movePx = 3;
private JPanel mainpanel;
/**
* Launch the application
*
* @param args
*/
public static void main(String args[]) {
DemoForDrawLineByKey frame = new DemoForDrawLineByKey();
frame.setBounds(100, 100, 500, 375);
frame.setVisible(true);
frame.init();
}
public void init() {
panel.requestFocusInWindow();
}
/**
* Create the frame
*/
public DemoForDrawLineByKey() {
super();
setTitle("利用键盘画线");
pointArrayList = new ArrayList<MyPoint>();
getContentPane().setLayout(null);
setBounds(100, 100, 500, 375);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
mainpanel = new JPanel();
mainpanel.setBounds(0, 0, 492, 341);
getContentPane().add(mainpanel);
mainpanel.setLayout(null);
panel = new MyPanelForDrawLine();
panel.setBounds(0, 0, 492, 341);
panel.requestFocusInWindow();
mainpanel.add(panel);
}
class MyPanelForDrawLine extends JPanel {
private static final long serialVersionUID = 3470945714820691208L;
KeyListenerForPanel mKeyListenerForPanel = new KeyListenerForPanel();
public MyPanelForDrawLine() {
super();
addKeyListener(mKeyListenerForPanel);
}
public void paintComponent(Graphics g) {
super.paintComponents(g);
g.setColor(Color.WHITE);
g.fillRect(0, 0, getWidth(), getHeight());
g.setColor(Color.BLACK);
drawOldLine(g);
g.fillRect(intNowX, intNowY, 3, 3);
}
public void drawOldLine(Graphics g) {
if (pointArrayList.size() > 0) {
Object tmpObj[] = pointArrayList.toArray();
MyPoint lasePoint = null;
if (tmpObj.length >= 1) {
lasePoint = (MyPoint) tmpObj[tmpObj.length - 1];
}
for (int i = 0; i < tmpObj.length - 1; i++) {
MyPoint tmpPoint1 = (MyPoint) tmpObj[i];
MyPoint tmpPoint2 = (MyPoint) tmpObj[i + 1];
g.drawLine(tmpPoint1.getPx(), tmpPoint1.getPy(), tmpPoint2
.getPx(), tmpPoint2.getPy());
}
g.drawLine(lasePoint.getPx(), lasePoint.getPy(), intNowX,
intNowY);
}
}
}
class MyPoint {
int px = 0;
int py = 0;
public MyPoint(int x, int y) {
px = x;
py = y;
}
public int getPx() {
return px;
}
public void setPx(int px) {
this.px = px;
}
public int getPy() {
return py;
}
public void setPy(int py) {
this.py = py;
}
}
class KeyListenerForPanel implements KeyListener {
public void keyPressed(KeyEvent e) {
int keycodeOfKey = e.getKeyCode();
if (keycodeOfKey != oldCode) {
oldCode = keycodeOfKey;
MyPoint tmpPoint = new MyPoint(intNowX, intNowY);
pointArrayList.add(tmpPoint);
} else {
switch (keycodeOfKey) {
// 向上
case KeyEvent.VK_UP :
intNowY = intNowY - movePx;
break;
// 向下
case KeyEvent.VK_DOWN :
intNowY = intNowY + movePx;
break;
// 向左
case KeyEvent.VK_LEFT :
intNowX = intNowX - movePx;
break;
// 向右
case KeyEvent.VK_RIGHT :
intNowX = intNowX + movePx;
break;
}
}
panel.repaint();
}
public void keyReleased(KeyEvent e) {
int keycodeOfKey = e.getKeyCode();
if (keycodeOfKey != oldCode) {
oldCode = keycodeOfKey;
MyPoint tmpPoint = new MyPoint(intNowX, intNowY);
pointArrayList.add(tmpPoint);
} else {
switch (keycodeOfKey) {
// 向上
case KeyEvent.VK_UP :
intNowY = intNowY - movePx;
break;
// 向下
case KeyEvent.VK_DOWN :
intNowY = intNowY + movePx;
break;
// 向左
case KeyEvent.VK_LEFT :
intNowX = intNowX - movePx;
break;
// 向右
case KeyEvent.VK_RIGHT :
intNowX = intNowX + movePx;
break;
}
}
panel.repaint();
}
public void keyTyped(KeyEvent e) {
}
}
}
import java.awt.Graphics;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.util.ArrayList;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class DemoForDrawLineByKey extends JFrame {
/**
* <p>功能描述:[字段功能描述]</p>
*/
private static final long serialVersionUID = -8155745524182056025L;
private ArrayList<MyPoint> pointArrayList;
private int intNowX = 10;
private int intNowY = 10;
private MyPanelForDrawLine panel;
private int oldCode = 0;
private int movePx = 3;
private JPanel mainpanel;
/**
* Launch the application
*
* @param args
*/
public static void main(String args[]) {
DemoForDrawLineByKey frame = new DemoForDrawLineByKey();
frame.setBounds(100, 100, 500, 375);
frame.setVisible(true);
frame.init();
}
public void init() {
panel.requestFocusInWindow();
}
/**
* Create the frame
*/
public DemoForDrawLineByKey() {
super();
setTitle("利用键盘画线");
pointArrayList = new ArrayList<MyPoint>();
getContentPane().setLayout(null);
setBounds(100, 100, 500, 375);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
mainpanel = new JPanel();
mainpanel.setBounds(0, 0, 492, 341);
getContentPane().add(mainpanel);
mainpanel.setLayout(null);
panel = new MyPanelForDrawLine();
panel.setBounds(0, 0, 492, 341);
panel.requestFocusInWindow();
mainpanel.add(panel);
}
class MyPanelForDrawLine extends JPanel {
private static final long serialVersionUID = 3470945714820691208L;
KeyListenerForPanel mKeyListenerForPanel = new KeyListenerForPanel();
public MyPanelForDrawLine() {
super();
addKeyListener(mKeyListenerForPanel);
}
public void paintComponent(Graphics g) {
super.paintComponents(g);
g.setColor(Color.WHITE);
g.fillRect(0, 0, getWidth(), getHeight());
g.setColor(Color.BLACK);
drawOldLine(g);
g.fillRect(intNowX, intNowY, 3, 3);
}
public void drawOldLine(Graphics g) {
if (pointArrayList.size() > 0) {
Object tmpObj[] = pointArrayList.toArray();
MyPoint lasePoint = null;
if (tmpObj.length >= 1) {
lasePoint = (MyPoint) tmpObj[tmpObj.length - 1];
}
for (int i = 0; i < tmpObj.length - 1; i++) {
MyPoint tmpPoint1 = (MyPoint) tmpObj[i];
MyPoint tmpPoint2 = (MyPoint) tmpObj[i + 1];
g.drawLine(tmpPoint1.getPx(), tmpPoint1.getPy(), tmpPoint2
.getPx(), tmpPoint2.getPy());
}
g.drawLine(lasePoint.getPx(), lasePoint.getPy(), intNowX,
intNowY);
}
}
}
class MyPoint {
int px = 0;
int py = 0;
public MyPoint(int x, int y) {
px = x;
py = y;
}
public int getPx() {
return px;
}
public void setPx(int px) {
this.px = px;
}
public int getPy() {
return py;
}
public void setPy(int py) {
this.py = py;
}
}
class KeyListenerForPanel implements KeyListener {
public void keyPressed(KeyEvent e) {
int keycodeOfKey = e.getKeyCode();
if (keycodeOfKey != oldCode) {
oldCode = keycodeOfKey;
MyPoint tmpPoint = new MyPoint(intNowX, intNowY);
pointArrayList.add(tmpPoint);
} else {
switch (keycodeOfKey) {
// 向上
case KeyEvent.VK_UP :
intNowY = intNowY - movePx;
break;
// 向下
case KeyEvent.VK_DOWN :
intNowY = intNowY + movePx;
break;
// 向左
case KeyEvent.VK_LEFT :
intNowX = intNowX - movePx;
break;
// 向右
case KeyEvent.VK_RIGHT :
intNowX = intNowX + movePx;
break;
}
}
panel.repaint();
}
public void keyReleased(KeyEvent e) {
int keycodeOfKey = e.getKeyCode();
if (keycodeOfKey != oldCode) {
oldCode = keycodeOfKey;
MyPoint tmpPoint = new MyPoint(intNowX, intNowY);
pointArrayList.add(tmpPoint);
} else {
switch (keycodeOfKey) {
// 向上
case KeyEvent.VK_UP :
intNowY = intNowY - movePx;
break;
// 向下
case KeyEvent.VK_DOWN :
intNowY = intNowY + movePx;
break;
// 向左
case KeyEvent.VK_LEFT :
intNowX = intNowX - movePx;
break;
// 向右
case KeyEvent.VK_RIGHT :
intNowX = intNowX + movePx;
break;
}
}
panel.repaint();
}
public void keyTyped(KeyEvent e) {
}
}
}
发表评论
-
linux下nodejs 安装
2016-09-28 19:27 662curl --silent --location https ... -
org.apache.cxf.common.i18n.UncheckedException: No operation was found with
2015-09-16 18:25 4853调用CXF编写的webservice时出现异常: org ... -
cmd可以ping通baidu.com,但是浏览器打不开网站
2015-09-16 18:24 2861cmd可以ping通baidu.com,但是浏览器打不开网站 ... -
openfire安装WebSocket插件
2015-09-01 17:59 3752WebSockets Plugin 安装说明 Prereq ... -
httpclient4.x 使用连接池发送https请求使用总结
2015-05-14 15:35 28254由于项目中需要用httpclient进行内部服务请 ... -
【转】java中request获取IP
2014-07-17 16:18 924项目中需要和第三方平 ... -
Java使用commons-dbcp2.0.1参数配置
2014-07-15 11:03 106841.关于commons-pool及commons-dbcp版 ... -
使用JDK自带的visualvm进行性能监测和调优
2014-07-14 13:50 81471.关于VisualVm工具 VisualVM ... -
[转]VisualVM 入门指南
2014-07-10 14:40 985转自:http://visualvm.java.net/zh ... -
[转]九大工具助你玩转Java性能优化
2014-07-10 11:06 857本文由 ImportNew - 陈 晓舜 翻译自 idrso ... -
struts2全局错误配置
2014-04-29 19:46 778<global-results> <r ... -
mysql 错误代码和消息
2014-02-24 14:09 1866原文地址:http://dev.mysql.com/doc/ ... -
Hibernate结合Spring配置可动态切换的数据源
2014-02-19 17:57 1318Hibernate结合Spring配置可动态切换的数据源,具 ... -
Sphinx或coreseek做全文索引相关备忘三
2013-12-09 15:29 1780今天遇到之前部署的全文检索昵称在查询时不能精确匹配的问题, ... -
Sphinx或coreseek做全文索引相关备忘二
2013-11-29 11:42 1116coreseek全文索引配置,多索引 #MySQL数 ... -
mysql中查看表结构相关sql
2013-11-19 11:22 4922/**查看表结构**/ desc yourtablena ... -
win7恢复锁定任务栏的快捷方式
2013-08-04 00:59 1080把以下命令分别输入到开始-运行中 1、cmd /k re ... -
eclipse内存分析工具
2013-07-23 18:21 876Eclipse Memory Analyzer (MAT) ... -
Sphinx或coreseek做全文索引相关备忘
2013-05-27 15:28 14381.下载sphinx或coreseek sphinx:http ... -
java环境变量
2013-05-17 11:37 1122JAVA_HOME:C:\Program Files\Java ...
相关推荐
项目利用`UIResponder`的`keyboardWillShow:`和`keyboardWillHide:`方法来捕获键盘的显示和隐藏事件,从而执行自定义的动画。 在键盘显示时,项目可能会包含以下步骤: 1. 计算键盘的高度:通过`...
本项目“MFC图形学画线算法,可鼠标拖动,键盘按键平移”聚焦于实现这一功能,利用MFC(Microsoft Foundation Classes)库,构建了一个交互式的图形界面,用户可以通过鼠标进行画线操作,并通过键盘控制线段的平移。...
7. **用户交互**:结合鼠标或键盘事件,可以让用户实时控制画线的过程,例如选择颜色、样式,或者直接绘制自由形状。 8. **代码示例**:在实际编程中,你需要在窗口的消息处理函数(如WndProc)中处理WM_PAINT消息...
在"Qt实现桌面画线、标记,流畅绘制,支持鼠标和多点触控绘制"这个项目中,开发人员利用了Qt的QGraphics框架来实现这一目标。 首先,QGraphics框架是Qt的一个重要部分,它提供了一种强大的方式来处理2D图形和场景。...
"GUI.zip.rar_按键画线_虚线点画线"这个标题暗示了一个项目或程序,它允许用户通过GUI来绘制图形,特别是利用按键操作来控制线条的样式,如实线、虚线和点画线,并可能包括改变线条颜色的功能。 首先,我们来讨论...
标题“汇编实现画笔程序(键盘)”和描述中提到了一个基于汇编语言编写的画笔程序,它利用键盘交互,具有屏幕分块、颜色选择、图形选择和绘图功能,支持平移和放缩操作。这个程序在早期计算机编程教育中常见,因为...
本教程针对OpenGL初学者,重点讲解如何利用鼠标进行交互式画线、绘制圆和矩形,并实现简单的菜单功能。 一、OpenGL基础 OpenGL是一个跨语言、跨平台的编程接口,提供了一系列函数来创建和操纵2D和3D图形。它不包含...
在深入探讨MFC中橡皮筋画线的实现之前,我们先简要回顾一下MFC(Microsoft Foundation Classes)的基础知识。MFC是一个基于C++的类库,它封装了Windows API,使得开发者能够更高效、更简洁地开发Windows应用程序。在...
本文将深入探讨如何在Visual C++ (VC) 下利用OpenGL框架实现画线和画点的功能。 首先,我们需要理解OpenGL是一个跨语言、跨平台的图形库,它提供了一组用于绘制2D和3D图形的函数。在VC++中,我们通常使用OpenGL的...
通过这个项目,初学者可以了解到C++结合SDL进行图形编程的基本流程,以及如何利用算法实现基本的画线功能。同时,这也是一个很好的起点,可以进一步探索更复杂的图形操作,如曲线绘制、颜色填充等。对于有兴趣深入...
"Tab下面画线并有效三角"的标题和描述指向的是一个关于如何在Tab组件下方添加动态下划线和切换时伴随的小三角形指示器的实现方法。这种设计通常用于指示当前选中的Tab项,提升用户体验。 Tab组件是UI设计中的一个...
本教程将深入讲解如何在MFC的单文档应用中集成OpenGL,实现基本的画线、画圆和画折线功能,以及创建画笔和笔刷。 1. **MFC与OpenGL集成** MFC是微软提供的一个C++类库,用于简化Windows应用程序的开发。在MFC中...
"win32 opengl画线"这个主题涉及到了在Microsoft Windows环境下,利用OpenGL库来创建和显示简单的线条。OpenGL是一个跨语言、跨平台的编程接口,用于生成2D和3D图像。在Visual Studio 2012这样的IDE中,我们可以配置...
当然,实际的程序可能会更复杂,可能包含用户交互,如鼠标点击选择起始点和结束点,或者使用键盘控制画线等。 在学习这个程序时,重点应该放在理解MFC框架的工作原理,如消息映射、事件处理、对象生命周期管理以及...
本教程“EasyGDI_颜色_画线_画图_gdi_”着重于利用GDI进行基本的图形绘制,包括画线、画图以及调整线条和填充的颜色。 首先,让我们了解一下GDI的基本概念。GDI是Windows操作系统内核的一部分,它提供了一系列API...
在本项目中,我们将讨论如何利用OpenGL和C++实现鼠标和键盘的交互功能,特别是梁友栋算法在裁剪操作中的应用。 首先,我们要理解OpenGL的基本工作流程。OpenGL是一个状态机,通过设置一系列的状态(如颜色、深度...
矩阵键盘是一种节省引脚资源的键盘设计,4X4矩阵键盘由4条行线和4条列线交叉组成,可以实现16个按键的识别。通过轮询或中断方式检测行线和列线的电平变化,可以确定哪个按键被按下。 Proteus是一款强大的电子电路...
- 调试技巧:利用易语言的调试工具,可以逐行执行代码,查看变量状态,帮助理解程序运行流程并定位问题。 5. **扩展与优化**: - 功能扩展:源码可以作为基础,添加更多功能,如保存和加载画作,添加特效滤镜等。...
窗口画图是通过在窗口的画图事件中进行图形绘制,例如使用“画线”、“填充区域”等命令。定时器则用于设置周期性的事件,比如每秒更新一次窗口内容。通过不断改变图形的位置、大小、颜色等属性,可以实现各种动画...
`InkCanvas`允许用户在上面画线,模拟手写过程,同时可以与识别库结合,将线条数据转化为文字。虚拟键盘可能通过创建自定义的UI元素,如按钮,结合`KeyEventArgs`事件处理键入,同时利用`ApplicationSettingsBase`类...