java 在已有的图片上画图

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java 在已有的图片上画图相关的知识,希望对你有一定的参考价值。

参考技术A //读取图片文件,得到BufferedImage对象

BufferedImage bimg=ImageIO.read(new FileInputStream("图片文件路径"));
//得到Graphics2D 对象
Graphics2D g2d=(Graphics2D)bimg.getGraphics();
//设置颜色和画笔粗细
g2d.setColor(Color.RED);
g2d.setStroke(new BasicStroke(3));
//绘制图案或文字
g2d.drawString("文本", x坐标, y坐标);

//保存新图片
ImageIO.write(bimg, "JPG",new FileOutputStream("文件路径"));追问

图片不保存,直接放在Jpanel里显示怎么写

追答

将新绘制的BufferedImage对象放入JLabel对象中,将JLabel对象放入JPanel中即可。
JLabel lbl=new JLabel(new ImageIcon(bimg));

追问

如果是用鼠标画图的呢,怎么写啊

追答

给JPanel追加鼠标移动事件监听,记录鼠标绘制轨迹,然后画在图片上。

本回答被提问者采纳

如何在已有的SQL查询的语句中,再添加一个查询条件?

两个表,一个表是TBL_TicketBasic,里面存储了票号、票据时间、票据状态等信息;另一个表是TBL_TicketType,里面只有票据类型,票据类型分为客票和货票两种
现在已有一个SQL查询语句实现了查询客票超期6个月,货票超期3个月的所有的票据信息(超期就是从票据时间开始)语句如下:
select * from
(select a.*, b.TicketTypeKind from TBL_TicketBasic as a
left join
TBL_TicketType as b on a.TicketType = b.TicketTypeNo)as c
where (c.TicketTypeKind = '2' and c.InDatetime<dateadd(month,-3,getdate()))
or (c.TicketTypeKind = '1' and c.InDatetime<dateadd(month,-6,getdate()))

我要再添加一个条件,就是在以上的基础上,进一步筛选出票据状态为“未销号”的,请高手帮忙写出语句,谢谢,分数不够可追加
上面没说清楚,票据状态有很多,没有直接的“未销号”,S表示已经销号,排除S的语句怎样写?

参考技术A select * from
(
select a.*, b.TicketTypeKind from TBL_TicketBasic as a
left join
TBL_TicketType as b on a.TicketType = b.TicketTypeNo
)as c
where
(
(c.TicketTypeKind = '2' and c.InDatetime<dateadd(month,-3,getdate()))
or (c.TicketTypeKind = '1' and c.InDatetime<dateadd(month,-6,getdate())
)
and c.票据状态 = ‘未销号’
)追问

可能没描述清楚,S表示已经销号。。。排除S的语句怎么写?。。。

追答

是不要 已经销号 ,还是要 已经销号 的

下面假设不用 已销号的:

select * from
(
select a.*, b.TicketTypeKind from TBL_TicketBasic as a
left join
TBL_TicketType as b on a.TicketType = b.TicketTypeNo
)as c
where
(
(c.TicketTypeKind = '2' and c.InDatetime ‘S'
)

本回答被提问者和网友采纳
参考技术B

可以再嵌套一个

select *
from 
(
   select * 
   from
   (
       select a.*, b.TicketTypeKind 
       from TBL_TicketBasic as a
            left join TBL_TicketType as b on a.TicketType = b.TicketTypeNo
    )as c
    where (c.TicketTypeKind = '2' and c.InDatetime<dateadd(month,-3,getdate()))
       or (c.TicketTypeKind = '1' and c.InDatetime<dateadd(month,-6,getdate()))
)d
where d.TicketStatus not like '%S%'

----再或者用inner join 关联下

 select * 
   from
   (
       select a.*, b.TicketTypeKind 
       from TBL_TicketBasic as a
            left join TBL_TicketType as b on a.TicketType = b.TicketTypeNo
    )as c
        inner join (select * from TBL_TicketBasic(不确定状态字段在哪个表) where TicketStatus='未销号') e on a.TicketType=e.TicketType
    where (c.TicketTypeKind = '2' and c.InDatetime<dateadd(month,-3,getdate()))
        or (c.TicketTypeKind = '1' and c.InDatetime<dateadd(month,-6,getdate()))

追问

第二个方法查了以后有错误,第一个倒是没错误可是什么也查不到啊。。。我确定我的数据库表里有数据的,奇怪了我也想这样写的,可是就是有问题

追答

我不知道你状态的哪个字段是什么 在哪个表的 ?

参考技术C select * from TBL_TicketBasic
left join TBL_TicketType
on TBL_TicketType.id=TBL_TicketBasic.id ---希望表里有对应ID
where 票据时间>6 and id=客票 and 票据状态=未销号

union
select * from TBL_TicketBasic
left join TBL_TicketType
on TBL_TicketType.id=TBL_TicketBasic.id ---希望表里有对应ID
where 票据时间<3 and id=货票and 票据状态=未销号
参考技术D 把前面的两个or条件再用括号括起来,然后后面加and 条件就行了啊 第5个回答  2013-07-24 在你的基础上加上
where 票据状态=‘未销号’

以上是关于java 在已有的图片上画图的主要内容,如果未能解决你的问题,请参考以下文章

[html语言]网页制作/如何在已切片图片的某一固定区域上,让图片和文字从下至上滚动?

如何利用java在图片上添加文字

canvas 2.0 图片绘制

怎么在电脑自带的画图工具中设置用图片填满整个屏幕

java画图工具来添加水印

图片识别OCR: