java 图像处理 空白_自认为图像处理高手的请进来解决一下

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

我用Graphics2D对像旋转一个自绘制的矩形,代码可以旋转,但是出了个问题!这个矩形在旋转的时候并不是按照它自己的中心点旋转,而是围绕着它的左上角在转。我的意图是想让它围绕自己的中心点做自转运动,但代码怎么改也实现不了,有高手可以解决一下吗?

/* 主类名: Rotate{} */

import java.awt.event.*;

import javax.swing.*;

import java.awt.*;

import java.awt.Graphics.*;

import java.util.*;

import java.awt.image.BufferedImage;

class Rotate extends JFrame implements Runnable{

Image bkimg =new  BufferedImage(180,200,7);

Graphics bkdc = bkimg.getGraphics();//

double x0=1024/2, y0=800/2, xp,yp, nowR, radio = 15.0;

Graphics mdc; Graphics2D mdc2;

public Rotate(){

InitPic(); //初始画一个矩形

this.setBounds(0,0,1024,800);

this.setBackground(Color.black);

this.setDefaultCloseOperation(3);

this.setVisible(true);

new Thread(this).start();

}

private void InitPic(){

for(int i=0;i<12;i++){

bkdc.setColor(new Color(i*40%255,i*60%240,240-i*80%240));

bkdc.fill3DRect(i*10,i*10,180-i*20,200-i*20,true);

}

}

public void run(){

while(true){

try{Thread.currentThread().sleep(10);}catch(InterruptedException err){}

radio = (radio>=360.0 ? 0 : radio+1.0);

RotBitmap();

}

}

private void RotBitmap(){

setTitle("现在的角度是:" + radio);

nowR = radio * 3.14159265859 / 180;

mdc2 = (Graphics2D)getGraphics();

xp = Math.sin(nowR);yp = Math.cos(nowR);

if(radio>0 && radio<=180){

xp = -xp; yp=-yp;

}  else {

yp= -yp; xp= -xp;}

mdc2.translate(x0+=xp,y0-=yp);

mdc2.rotate(nowR);

if(bkimg!=null)mdc2.drawImage(bkimg,0,0,null);

mdc2.dispose();

}

public static void main(String[] ag){

Rotate demo = new Rotate();

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值