J2ME GUI实战之五 ----------LWUIT的绘图功能

工业模型导入Unity实战:从ProE/SolidWorks到实时渲染的完整流程 在工业仿真、数字孪生和VR/AR应用开发中,将高精度工程模型导入实时渲染引擎是一个常见的技术挑战。其核心原理在于参数化工程软件与实时渲染引擎的数据结构差异:前者基于精确的B-rep边界表示和特征树,后者依赖轻量化的三角网格与材质贴图。这一转换的技术价值在于实现工程数据的可视化与交互化,为产品展示、虚拟培训和工厂仿真等应用场景提供基础。通过数据翻译与优化流程,特别是利用3ds Max或Blender作为中转站进行网格优化与UV展开,能够有效解决模型破面、材质丢失和性能问题。本文聚焦于ProE(Creo)和So 阅读详情
  本文来自:http://blog.youkuaiyun.com/hellogv/ ,转载必须注明出处!
首先先给出本例的效果图:


首先,需要说明一下LWUIT的控件:
    LWUIT的控件,可以算是做得很全,他的设计模式跟J2SE有点类似,而做过J2ME的人要掌握也不需要长时间。LWUIT的控件,是原来高级控件与低级控件的集合,并加入了更多元素,因此你可以在用高级控件的同时,很自然地实现低级控件的功能。例如本文中的绘图功能,就是如此!
    在本例中,依然使用大家熟悉的void paint(Graphics g) 函数,作为绘图的主体,然而paint的“上司”(绘图类)并不再是继承Canvas,而是继承Component,并且继承Component之后要这 样被调用:form.addComponent(BorderLayout.CENTER, new Painting());//
Painting就是“上司”。可见,在LWUIT里,已经没低级控件这个概念,但是有这个用法-----传统的绘图类也作为控件类,被调用了。或许,你想用回原来的javax.microedition.lcdui.Graphics,但是lcdui的Graphics和Display 与 LWUIT的Graphics和Display不兼容(LWUIT多了很多方法),因此“新欢旧爱不能兼得”!
   
OK,先给出调用绘图功能的代码:
  1.     private class ButtonActionListener implements ActionListener {
  2.         public void actionPerformed(ActionEvent evt) {
  3.           String sel_button=((Button)(evt.getSource())).getText();//取得所选按钮的名称
  4.           if(sel_button.equals("Image 1"))
  5.               new AnimationDemo().form.show();
  6.           else if(sel_button.equals("Image 2"))
  7.               new PaintingDemo().form.show();
  8.         }
  9.     }
接着再给出绘图功能实现的代码:
  1. /*
  2.  * Copyright ?2008 Sun Microsystems, Inc. All rights reserved.
  3.  * Use is subject to license terms.
  4.  *
  5.  */
  6. package com.sun.lwuit.uidemo;

  7. import com.sun.lwuit.Command;
  8. import com.sun.lwuit.Component;
  9. import com.sun.lwuit.Form;
  10. import com.sun.lwuit.Graphics;
  11. import com.sun.lwuit.events.ActionEvent;
  12. import com.sun.lwuit.events.ActionListener;
  13. import com.sun.lwuit.layouts.BorderLayout;


  14. /**
  15.  * Demonstrates simple animation both static and manual
  16.  *
  17.  * @author Shai Almog
  18.  */
  19. public class PaintingDemo   extends Form implements ActionListener {
  20.     public Form form = new Form("PaintingDemo");
  21.     private  Command backCommand = new Command("Back", 1);
  22.     private  Command nextCommand = new Command("next", 2);
  23.     PaintingDemo()
  24.     {
  25.             form.addCommand(backCommand);
  26.             form.addCommand(nextCommand);
  27.             form.setCommandListener(this);
  28.             form.setLayout(new BorderLayout());
  29.             form.addComponent(BorderLayout.CENTER, new Painting());

  30.     }
  31.   public class Painting extends Component{
  32.         private int w;
  33.    public void paint(Graphics g) {
  34.           g.setColor(0x000000);
  35.           g.fillRect(0, 0, this.getWidth(), this.getHeight());
  36.           w = getWidth();
  37.           drawSqrt1(g);
  38.           g.setColor(0xffffff);
  39.           g.drawString("hellogv", 12, 33);

  40.       }
  41.            private void drawSqrt1(Graphics g) {
  42.             long start = System.currentTimeMillis();

  43.             int centerY1 = 50;

  44.             //绘制X轴
  45.             //设置绘图颜色为蓝色
  46.             g.setColor(0x0000FF);
  47.             g.drawLine(0, centerY1, w, centerY1);

  48.             //设置绘图颜色为白色
  49.             g.setColor(0xFFFFFF);
  50.             int oldX = 0;
  51.             int oldY1 = centerY1;

  52.             int y1;
  53.             for(int i=1;i<w;i++) {
  54.                 //              放大3倍
  55.                 y1 = centerY1 - (int)(3*Math.sqrt(i));
  56.                 g.drawLine(oldX, oldY1, i, y1);
  57.                 oldX = i;
  58.                 oldY1 = y1;
  59.             }
  60.             long time = System.currentTimeMillis() - start;
  61.             System.out.println("drawSqrt1 Runtime: " + time);
  62.         }

  63.   }
  64.     public void actionPerformed(ActionEvent arg0) {
  65.         if(arg0.getCommand()==backCommand)
  66.         {
  67.             UIDemoMIDlet.backToMainMenu();
  68.         }
  69.         else if(arg0.getCommand()==nextCommand)
  70.         {
  71.           
  72.         }
  73.     }
  74. }
OK,还是那句,希望大家多多支持LWUIT,让它可以做得更加好!
清华开源GPGPU“承影Ventus”初体验:用RISC-V RVV指令集跑通第一个OpenCL程序 本文详细介绍了清华大学开源GPGPU“承影Ventus”的开发实践,展示了如何基于RISC-V RVV指令集运行首个OpenCL程序。从环境配置、内核开发到性能优化,全面解析了这一创新架构的开发流程,为开发者提供了在RISC-V生态中进行通用GPU计算的实用指南。 阅读详情

相关推荐

UE4项目迁移指南:如何无缝导入外部.uasset文件并保持材质关联

本文详细解析了将外部.uasset文件无缝导入UE4项目的专业方法。针对手动复制文件时常见的材质关联丢失问题,提供了使用引用查看器进行诊断和修复的实用技巧,并推荐使用引擎内置的“迁移”功能确保资源依赖关系的完整性,帮助开发者高效整合项目资源。

t8u9v0的博客 1046

Motorola的J2ME界面扩展——LWT介绍

Motorola的J2ME界面扩展——LWT介绍作者:陈跃峰出自:http://blog.youkuaiyun.com/mailbomb        LWT(Lightweight Window Toolkit)是Motorola公司对MIDP的javax.microedition.lcdui界面包的一个扩展,可以在Motorola系列的手机中象使用MIDP界面一样来进行使用,解决了MIDP界面不能通过屏幕

爪哇米工作室陈跃峰的移动开发博客 2694

linux离线安装nginx

linux离线安装nginx

zhang_130914036的博客 9349

j2me画图

游戏开发中,很多图,比如数字美术图0-9,精灵各个桢图,都放一张png图里去。然后就有了以下api绘图讨论: 第一种:midp1.0中,用setClip设置特定裁剪区,配合drawImage去画,然后又setClip放回原来未画时的裁剪区。画时,图如果是x*y像素,setClip完,还是要遍历(循环)x*y,所以效率不高。 第二种:J2me资源利用,只要有提高的空间,人们都会努力去改进。Mid...

鸟哥 164

Pixel 6 Pro升级Android 13变砖急救指南:Fastboot全分区修复实战

本文提供Pixel 6 Pro升级Android 13变砖后的Fastboot全分区修复实战指南,详细解析变砖原因、必备工具准备、Fastboot模式解锁、全分区擦除操作及手动刷入官方ROM的完整流程,帮助用户高效解决设备变砖问题。

weixin_28693447的博客 485

34、木材在家具制造中的应用

本文详细探讨了木材在家具制造中的应用,从木材的选择、加工技术到设计创新和表面处理等方面进行了全面解析,并结合实际案例分析木材家具的市场趋势与未来发展。文章强调了木材家具在功能性、智能化和环保性方面的潜力,展示了其在现代家居生活中的重要地位。

flink9streamer的博客 242

J2ME中绘制和填充多边形

J2ME中绘制和填充多边形

lincon的专栏 1381

【Codecs系列】HEVC-SCC(一):核心技术介绍

DATE: 2020.6.4【Tags: HEVC SCC】 1、参考网址 2、SCC简介 3、HEVC-SCC核心技术

优快云明星博主,认证博客专家,视频、Matlab领域优质创作者。 4806

J2ME GUI实战之一 ----------LWUIT简介

本文来自:http://blog.youkuaiyun.com/hellogv/ ,转载必须注明出处!首先,想让大家看看LWUIT可以做出什么界面:这种界面,用J2ME-Polish也不难做出来,但是作者我更喜欢LWUIT,因为她发展得很快很快,觉得值得大家关注!!好了,继续介绍,以下内容摘自网络:Sun发布了LWUIT(Light-Weight UI Toolkit)的源代码以及示例代码(示例后面会详细说明

hellogv的专栏 6731

【tessy】软件环境配置:Keil C51 Keil uVision UVSC (Default)

本文详细说明了tessy软件如何配置【Keil C51 Keil uVision UVSC (Default)】环境,具体操作步骤和注意事项

qq_37282365的博客 601

【毕设保姆级指南】基于YOLOv8的DAGM 2007工业缺陷检测系统从搭建到落地

本教程基于YOLOv8算法实现DAGM 2007工业缺陷检测系统,包含数据处理、模型训练和可视化界面开发全流程。首先对DAGM数据集进行格式转换和划分,然后通过YOLOv8训练工业缺陷检测模型,最终构建PyQt5交互界面实现缺陷可视化检测。该系统可用于智能制造中的产品质量控制,帮助快速定位工业产品缺陷,提升检测效率和准确性,为工业质检提供高效解决方案。

LXY_LOVE36的博客 182

J2ME程序界面——开源UI库

J2ME自带UI不是太美观,使用起来也不太方面,为了解决这问题,很多UI库应势而出。使用这些库,可以大大简化开发,提高效率。当然有好必有坏,使用 这些库的不好的地方就是这些库通常很大,很难在一些很老的机器上运行。不过这些库都是开源的,因此可以拿它们的代码来研究研究,然后做出自己的库来。 Apime: http://www.java4ever.com/index.php?section=j2...

liwy_finder的博客 314

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

J2ME相关的开源项目

http://www.oschina.net/p/j2me+polish/similar_projects?p=2 kSOAP2http://ksoap2.sourceforge.net/ kSOAP 2 是一个手机上的SOAP web service客户端包。主要用于资源受限制的Java环境如Applets或J2ME应用程序(CLDC/ CDC/MIDP)。kXML

技术的学习与积累是个技术活 6208

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

J2ME UI库除了自带的以外

J2ME UI库除了自带的以外,还有很多开源J2ME UI库,其中很多都比J2ME的自带UI库好用。下面介绍一下这些开源J2ME UI库:   J2ME自带UI不是太美观,使用起来也不太方便,为了解决这问题,很多UI库应势而出。使用这些库,可以大大简化开发,提高效率。当然有好必有坏,使用 这些库的不好的地方就是这些库通常很大,很难在一些很老的机器上运行。不过这些库都是开源的,因此可以拿它们的代码

wetgsg的专栏 503

J2ME GUI实战之二 ----------LWUIT实现手机九宫图

 本文来自:http://blog.youkuaiyun.com/hellogv/ ,转载必须注明出处! 本文的源代码,已放到 http://download.youkuaiyun.com/user/hellogv 供大家下载!首先,想让大家看看九宫图实现之后的界面:本文所用的代码,是来自LWUIT所提供的Sample例子,但是对例子做出以下修改:1.设计自主的res资源文件2.把builde.xml里面的 。。。。。

hellogv的专栏 6519

J2ME GUI实战之七 ----------LWUIT的Tabbed分页、Text文本

本文来自:http://blog.youkuaiyun.com/hellogv/ ,转载必须注明出处!首先,想让大家看看本例实现之后的动画:    首先,先来说说“分页”,Win32控件中,有种控件叫做Tab,这个功能是把一个窗体分层,同时可以容纳更多控件(注:这里的分页并不是B/S的网络数据库中的分页)。    在J2ME中实现Tab,可谓是件好事,包含Tab控件的Class可以作为主类,从而根据需求关联更

hellogv的专栏 4716

J2ME GUI实战之六 ----------LWUIT的Label、CheckBox、RadioButton

 本文来自:http://blog.youkuaiyun.com/hellogv/ ,转载必须注明出处!    文章写到这里,想必大家也对LWUIT有个大概的了解了,至少也该知道LWUIT可以做些什么。九宫图只是LWUIT的Button控件的典型应用而已,在LWUIT里面,还有很多在J2SE GUI可以见到的控件,例如文本需要介绍的Label、CheckBox、RadioButton等。    Label一般

hellogv的专栏 5326

J2ME Polish 共有 36 个类似项目

http://www.oschina.net/p/j2me+polish/similar_projects?p=2kSOAP2 http://ksoap2.sourceforge.net/ kSOAP 2 是一个手机上的SOAP web service客户端包。主要用于资源受限制的Java环境如Applets或J2ME应用程序(CLDC/ CDC/MIDP)。 kXML http:

况天宝的专栏 2579
上一篇: J2ME GUI实战之四 ----------LWUIT的Button使用以及窗体布局
下一篇: J2ME GUI实战之六 ----------LWUIT的Label、CheckBox、RadioButton
欧巴Godwin
欧巴Godwin 领域专家: 操作系统技术领域 领域专家: 操作系统技术领域
博客等级 码龄20年 9690粉丝 141原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值