j2me Canvas 闪烁扇形区域

notepads 2009-05-12 05:28:22
我用Graphics的fillArc画了几个扇形,拼成了一个正圆
g.fillArc 填充其中一个扇形,我想让这个区域闪烁起来,以区别这个区域是否被选中
[我的想法是启动一个线程,根据所设置的不同颜色重绘这个区域]
但是一直不闪烁,请求高手支援...
...全文
225 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
yangc_83 2009-05-15
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 notepads 的回复:]

我的意思是让那个选中的蓝色区域,颜色不断变化,以达到闪烁的效果。
不知道能看见图片吗?
[/Quote]
那就叫你的美工出张闪的图,2张换着画,包闪~~~
liqia76 2009-05-15
  • 打赏
  • 举报
回复
补充一下
闪烁频率 调下面的 8 改成 4的倍数

b=(b+4)%8;
if(b <4){
liqia76 2009-05-15
  • 打赏
  • 举报
回复
下面的测试通过 直接复制就好了 j2me

import javax.microedition.lcdui.Canvas;
import javax.microedition.lcdui.Display;
import javax.microedition.lcdui.Graphics;
import javax.microedition.midlet.MIDlet;
import javax.microedition.midlet.MIDletStateChangeException;

public class ARC extends MIDlet {
Display dis;
Myarc mc;
public ARC() {
mc=new Myarc();
dis=Display.getDisplay(this);
dis.setCurrent(mc);
new Thread(mc).start();
}
protected void destroyApp(boolean arg0) throws MIDletStateChangeException {

}
protected void pauseApp() {

}
protected void startApp() throws MIDletStateChangeException {

}
}


class Myarc extends Canvas implements Runnable{
long fpss,fpse,FPS=15;
public void run(){
while(true){
fpss=System.currentTimeMillis();
repaint();
fpse=System.currentTimeMillis();
if((fpse-fpss)<1000/FPS){
try{
Thread.sleep(1000/FPS-fpse+fpss);
}catch(Exception e){}
}
}
}


int b=0;
public void paint(Graphics g){
// g.fillArc(50, 50, 100,100, 0, 90);
// g.fillArc(50,50, 100, 100, 90, 180);
// g.fillArc(50,50, 100, 100, 180, 270);
// g.fillArc(50,50, 100, 100, 270, 360);

for(int i=0;i<4;i++){
g.setColor(0);
g.fillArc(50,50,100,100,i*90,90);
}
b=(b+4)%8;
if(b<4){
g.setColor(255,255,255);
g.fillArc(50,50,100,100,b*90,90);
}
}
public void keyPressed(int key){
switch(key){
case -1:
case -2:
case -3:
case -4:b=(++b)%4;
}
}
}
zhaoyb0319 2009-05-14
  • 打赏
  • 举报
回复
哎,亚日的方法多清楚,明白啊!
就是一个状态的切换
用一个变量去控制它
再加上线程的记录呗!
shally131 2009-05-14
  • 打赏
  • 举报
回复
    protected void paint(Graphics g) {
g.setColor(0xFFFFFF);
g.fillRect(0, 0, getWidth(), getHeight());// 绘制背景

// 绘制5个扇形
g.setColor(0xFFFFFF);
// g.fillArc(arg0, arg1, arg2, arg3, arg4, arg5);

// 用与背景相同的颜色,遮住要闪烁的扇形
if (System.currentTimeMillis()%7==3) {//控制闪烁
g.setColor(0xFFFFFF);
//绘制扇形区
// g.fillArc(arg0, arg1, arg2, arg3, arg4, arg5);
}
}
notepads 2009-05-13
  • 打赏
  • 举报
回复
打错字了
2楼:你没有其它线程,run方法没有执行呢, 将“其它”改为"启动"
notepads 2009-05-13
  • 打赏
  • 举报
回复
1楼:当选中的是第0, 3, 6个的时候绘制了一个扇形区域;
2楼:你没有其它线程,run方法没有执行呢,
=======
首先谢谢两位。
不知道两位兄弟明白我的意思了吗?
整个我都画好了,我设置了一个默认选择的区域,用键盘来改变当前选择的区域,我想让这个区域突出显示,
我现在是加深颜色,但这样根本看不出来效果。本身就是用不同颜色来区分不同区域,
现在我主要是想利用线程把选中的区域,让它在两种不同颜色间交换重绘,以达到闪烁的效果
当然不用线程,用其它技术也可以,我只想到了线程.
yangc_83 2009-05-13
  • 打赏
  • 举报
回复
其实答案都出来了
LZ思路还是有问题,
其实就这样
区域1 颜色1
区域2 颜色2
区域3 颜色3
区域4 颜色4
--
用一个变量来存储 选中的区域
当选中区域1: 颜色1和 颜色5交替着画,不选就画颜色1
当选中区域2: 颜色2和 颜色5交替着画,不选就画颜色2
...
------
交替着画,LS的都给出了算法,
建议用7楼的,好实现!




xuyan87101 2009-05-13
  • 打赏
  • 举报
回复
用奇数偶数交替的方法来判断改变你的闪烁,再用sleep来设置你想要的闪烁间隔就可以了
hc0120 2009-05-13
  • 打赏
  • 举报
回复
顶一下
kf156 2009-05-13
  • 打赏
  • 举报
回复
你是想可以同时选取多个扇形是吗?
那你可以用个boolean[] selectedArray 来分别对应所选的扇形
选中后置相应的为true
time++;
g.setColor(0xffffff);
for(int i=0;i<PART_NUM;i++){
if(time%3==0&&selectedArray[i]){
g.setColor(0xff0000);
}
//绘制相应部分的扇形
drawArc(i);
}
prince58 2009-05-13
  • 打赏
  • 举报
回复
只在有PAINT里一会画一会不画(时间间隔可以自己设定)就闪烁,不需要新的线程。

同理可以一会画红色一会画它原来的颜色也实现闪烁了~~~
隧便 2009-05-13
  • 打赏
  • 举报
回复
你说的闪烁是指颜色一直不停的改变?还是只要颜色改掉以区别其他未选中的?
notepads 2009-05-13
  • 打赏
  • 举报
回复

我的意思是让那个选中的蓝色区域,颜色不断变化,以达到闪烁的效果。
不知道能看见图片吗?
JarodYv 2009-05-12
  • 打赏
  • 举报
回复
简单的说,就是用一个与北京颜色一致的等下小的扇形遮住要闪烁的扇形,下面是示例代码,扇形绘制部分的代码需要楼主自己去实现

public class TestCanvas extends Canvas implements Runnable {

private static final int PART_NUM = 5;// 假设这个圆被分成了5部分
private boolean isRunning = true;// 标识线程是否运行
private int times = 0;// 标示重绘的次数。
private int selectedIndex = 0;// 表示选中的是整圆的第几部分

protected void paint(Graphics g) {
g.setColor(0xFFFFFF);
g.fillRect(0, 0, getWidth(), getHeight());// 绘制背景

// 绘制5个扇形
g.setColor(0xFFFFFF);
g.fillArc(arg0, arg1, arg2, arg3, arg4, arg5);

// 用与背景相同的颜色,遮住要闪烁的扇形
if (times % 2 == 0) {
g.setColor(0xFFFFFF);
g.fillArc(arg0, arg1, arg2, arg3, arg4, arg5);
}
}

protected void keyPressed(int keyCode) {
keyCode = getGameAction(keyCode);
switch (keyCode) {
case Canvas.UP:
case Canvas.LEFT:
selectedIndex = --selectedIndex < 0 ? 0 : PART_NUM - 1;
break;
case Canvas.DOWN:
case Canvas.RIGHT:
selectedIndex = ++selectedIndex >= PART_NUM ? 0 : selectedIndex;
break;
}
}

public void run() {
while (isRunning) {
times++;// 重绘次数加1
repaint();// 重绘
try {
Thread.sleep(100L);// 假设100ms重绘一次
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
kf156 2009-05-12
  • 打赏
  • 举报
回复
简单一点的方法就是用个int变量
比如
int time;
public void paint(Graphics g){
time++;
g.setColor(0);
g.fillArc();//第一个扇形
g.fillArc();//第二个扇形
……//其N个扇形

if(time%3==0)
g.setColor(0xffffff);
g.fillArc();//你想闪烁显示的扇形 

}
YOLO医学影像组织结构目标检测数据集 目标类别:['0', '1', '2', '3', 'object'] 中文类别:['其他', '其他', '其他', '其他', '物体'] 训练集:13984 张 验证集:1894 张 测试集:0 张 总计:15878 张 该数据集提供了data.yaml文件,内容如下: train: ../train/images val: ../valid/images test: ../test/images nc: 5 names: ['0', '1', '2', '3', 'object'] 该数据集聚焦于医学影像领域,专为组织结构识别与分析设计,具有高度专业性和临床应用价值。其核心检测目标为人体或生物组织的微观结构特征,适用于病理学研究、影像辅助诊断及医学图像自动化分析场景。数据采集覆盖多种组织形态,为相关算法模型训练提供高质量视觉样本。 数据集包含训练集13984张、验证集1894张、测试集0张,总计15878张图像。训练集规模充足,可支撑模型充分学习各类组织结构特征;验证集比例合理,确保模型在未见数据上的泛化能力评估可靠;测试集虽为空,但不影响模型开发与验证流程的完整性,整体分布符合工业级目标检测数据集的标准配置。 所有图像均经过专业标注,标注边界清晰、覆盖完整,针对不同组织形态提供了精确的区域标记。标注过程遵循医学影像分析规范,确保每个目标实例的语义一致性与空间准确性,为后续模型训练提供了高保真度的监督信号,有效保障了模型性能的稳定提升。 该数据集可广泛应用于医疗影像分析系统开发、病理切片自动识别、手术导航辅助系统训练等实际医疗场景。其高质量标注与多样化的组织结构样本,有助于推动人工智能技术在精准医疗、智能诊断和医学教育领域的落地应用,为提升临床效率与诊断准确性提供坚实的数据基础。
内容概要:本文系统性地介绍了2026年8月提出的新型优化算法——心率优化算法,并结合Matlab代码实现,深入探讨其在电力系统、智能优化、路径规划、信号处理等多个前沿科研领域的应用。文档涵盖了大量基于Matlab/Simulink的仿真案例,包括虚拟电厂中电动汽车V2G充放电优化、深度强化学习(如DDPG、QLearning)在能源调度与机器人控制中的应用、多无人机协同三维路径规划、微电网多时间尺度调度、逆变器阻抗建模与稳定性分析等关键技术课题。同时,文档强调科研中“借力”与“创新”并重的理念,倡导系统性思维与扎实实践相结合,配套提供了丰富的学习资源,包括网盘中的完整代码、模型与文献资料,助力读者高效复现研究成果。; 适合人群:具备一定Matlab/Simulink编程基础,从事电力系统、自动化控制、人工智能、路径规划、信号处理及相关交叉学科研究的研究生、科研人员及工程技术人员。; 使用场景及目标:①为科研工作者提供可复现的算法代码与高保真仿真模型,加速论文复现与课题攻关;②支持智能优化算法、强化学习、电力电子控制等新技术的开发与性能验证;③辅助撰写高水平学术论文、完成学位论文或开展实际工程项目研发。; 阅读建议:建议读者按照文档目录结构系统性浏览,优先聚焦与自身研究方向契合的案例,结合网盘提供的完整资源进行代码调试与仿真验证,注重理论推导与编程实践的深度融合,以全面提升科研效率与技术创新能力。

13,096

社区成员

发帖
与我相关
我的任务
社区描述
Java J2ME
社区管理员
  • J2ME社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧