📄 imagetiledcanvas.java
字号:
offg.fillRect(0, 0, width, height);
// 夋憸偑懚嵼偡傞応崌
}else {
// 尦夋憸偺(px,py)嵗昗偐傜暆zoomW丄崅偝zoomH暘偺僀儊乕僕傪庢摼偟偰偒偰丄
// (0,0)嵗昗偐傜丄僆僼僗僋儕乕儞偄偭傁偄偵夋憸傪昤夋
offg.drawImage(image[imgNo], 0, 0, width, height, px, py, px+zoomW, py+zoomH, this);
}
// 姰惉偟偨僆僼僗僋儕乕儞傪(tmp_x,tmp_y)嵗昗偵昤夋
offallg.drawImage(offImage, 0, 0, this);
// 専嵏忣曬傪昤偔
if(showStudyInfo) {
int x, y; // 専嵏忣曬傪彂偔嵗昗
int maxlength = 0; // 暥帤楍偺挿偝
// 専嵏忣曬偼僌儕乕儞偱昤夋
offallg.setColor(Color.green);
offallg.setFont(font);
// 嵍忋
x = 2;
y = fm.getAscent() +2;
if(patientID[imgNo] != null) {
offallg.drawString(patientID[imgNo], x, y);
y += fm.getHeight();
}
if(patientName[imgNo] != null) {
offallg.drawString(patientName[imgNo], x, y);
y += fm.getHeight();
}
if(patientAgeSex[imgNo] != null) {
offallg.drawString(patientAgeSex[imgNo], x, y);
}
// 嵍壓
y = height - fm.getDescent() -2;
if(ww_wl[imgNo] != null) {
offallg.drawString(ww_wl[imgNo], x, y);
}
// 塃忋
// 暥帤楍偺挿偝偑傕偭偲傕挿偄傕偺傪扵偡
if(studyID[imgNo] != null && maxlength < fm.stringWidth(studyID[imgNo])) maxlength = fm.stringWidth(studyID[imgNo]);
if(studyDate[imgNo] != null && maxlength < fm.stringWidth(studyDate[imgNo])) maxlength = fm.stringWidth(studyDate[imgNo]);
if(studyTime[imgNo] != null && maxlength < fm.stringWidth(studyTime[imgNo])) maxlength = fm.stringWidth(studyTime[imgNo]);
x = width - maxlength -2;
y = fm.getAscent() +2;
if(studyID[imgNo] != null) {
offallg.drawString(studyID[imgNo], x, y);
y += fm.getHeight();
}
if(studyDate[imgNo] != null) {
offallg.drawString(studyDate[imgNo], x, y);
y += fm.getHeight();
}
if(studyTime[imgNo] != null) {
offallg.drawString(studyTime[imgNo], x, y);
}
// 塃壓
x = width - fm.stringWidth(imageNo[imgNo]) -2;
y = height - fm.getDescent() -2;
if(imageNo[imgNo] != null) {
offallg.drawString(imageNo[imgNo], x, y);
}
}
// 僀儊乕僕偺椫妔傪昤偔
// 慖戰夋憸偑曄壔偟偨応崌
if(changeActive) {
// 儅僂僗偺僋儕僢僋偟偨嵗昗偑崱昤夋偡傞夋憸忋偺応崌
if((tmp_x <= x1) && (x1 < tmp_x+width) && (tmp_y <= y1) && (y1 < tmp_y+height)) {
// 夋憸偑懚嵼偟側偄応強偺僋儕僢僋偺応崌偼敀榞乮慖戰夋憸曄壔側偟乯
if(image[imgNo] == null){
offallg.setColor(Color.white);
offallg.drawRect(0, 0, width -1, height -1);
// 夋憸偑懚嵼偡傞応崌偼丄慖戰夋憸傪崱偺夋憸偵偟偰丄墿怓榞傪堷偔
}else {
// activeNo偺曄峏
activeNo = imgNo;
parent.changeActive(activeNo + start);
offallg.setColor(Color.yellow);
offallg.drawRect(0, 0, width -1, height -1);
}
// 儅僂僗偺僋儕僢僋偑偙偺夋憸忋偱側偄応崌丄敀榞傪堷偔
}else {
offallg.setColor(Color.white);
offallg.drawRect(0, 0, width -1, height -1);
}
// 慖戰夋憸偑曄壔偟側偄応崌
}else {
// 慖戰夋憸側傜墿怓榞
if(activeNo == imgNo) {
offallg.setColor(Color.yellow);
offallg.drawRect(0, 0, width -1, height -1);
// 慖戰夋憸偱側偄側傜偽丄敀榞
}else {
offallg.setColor(Color.white);
offallg.drawRect(0, 0, width -1, height -1);
}
}
// 姰惉偟偨僆僼僗僋儕乕儞傪(tmp_x,tmp_y)嵗昗偵昤夋
g.drawImage(offallImage, tmp_x, tmp_y, this);
// 儖乕儁傪嶌傞
if(loupe && mouseDown) {
// 僋儕僢僋偟偨嵗昗偑崱昤夋偟偰偄傞夋憸忋偺応崌儖乕儁傪嶌傞
if((tmp_x <= x1) && (x1 < tmp_x+width) && (tmp_y <= y1) && (y1 < tmp_y+height)) {
// 僋儕僢僋偟偨嵗昗偺慜屻50僺僋僙儖偢偮崌寁廲墶100僺僋僙儖庢摼偟丄
// 廲墶200僺僋僙儖偺僆僼僗僋儕乕儞偵昤夋偡傞乮偮傑傝丄2攞偵昞帵偝傟傞乯
loupeg.drawImage(offImage, 0, 0, 200, 200, x1-tmp_x-50, y1-tmp_y-50, x1-tmp_x+50, y1-tmp_y+50,this);
}
}
imgNo++;
}
} // for暥偺廔傢傝
changeActive = false;
// 儖乕儁傪昤偔
if(loupe && mouseDown) {
// 僋儕僢僋偟偨嵗昗偺恀拞偵側傞傛偆偵儖乕儁僆僼僗僋儕乕儞傪昤夋
g.drawImage(loupeImage, x1-100, y1-100, this);
// 儖乕儁夋憸偺廃傝偵敀榞傪昤夋
g.setColor(Color.white);
g.drawRect(x1-100, y1-100, 200, 200);
}
}
// 僘乕儉棪傪曄峏偡傞儊僜僢僪
public void changeZoom(double zoom){
this.zoom = zoom;
int zoomW_old = zoomW;
int zoomH_old = zoomH;
int px_old = px;
int py_old = py;
// 僘乕儉偺愝掕
zoomW = (int)(width * zoom);
zoomH = (int)(height * zoom);
// 夋憸偺拞怱傪昞帵偡傞傛偆偵奼戝弅彫偡傞傛偆偵偡傞
px = (int)((zoomW_old - zoomW) >> 1) + px_old;
py = (int)((zoomH_old - zoomH) >> 1) + py_old;
// repaint();
}
// CanvasSize傪曄峏偡傞儊僜僢僪
public void changeCanvasSize(double size) {
width = (int)(imgW * size);
height = (int)(imgH * size);
canvasSize.setSize(width * tileC, height * tileR);
setSize(canvasSize);
}
// 尒偰偄傞帇揰乮嵗昗乯傪曄峏偡傞
public void setPxPy(int x, int y) {
this.px = x;
this.py = y;
}
// 尒偰偄傞帇揰乮嵗昗乯傪摼傞
public int getPx() {
return px;
}
public int getPy() {
return py;
}
// 儖乕儁傪昤夋偡傞偐偳偆偐僙僢僩偡傞
public void setLoupeState(boolean state) {
this.loupe = state;
}
// 夋憸傪儅僂僗偱堏摦偡傞偐偳偆偐僙僢僩偡傞
public void setMoveState(boolean state) {
this.move = state;
}
// 夋憸傪儅僂僗偱奼戝弅彫偡傞偐偳偆偐僙僢僩偡傞
public void setZoomState(boolean state) {
this.zoom_flag = state;
}
// 儅僂僗僇乕僜儖偺宍傪曄峏偡傞儊僜僢僪
private void changeCursor(){
if(hand)
this.setCursor(new Cursor(Cursor.MOVE_CURSOR));
else
this.setCursor(new Cursor(Cursor.DEFAULT_CURSOR));
hand = !hand;
}
// 儅僂僗憖嶌儕僗僫乕
class SetPoint extends MouseAdapter {
// 儅僂僗偑Canvas撪偵擖偭偨偲偒
public void mouseEntered(MouseEvent e) {
if(loupe) {
setCursor(new Cursor(Cursor.CROSSHAIR_CURSOR));
}else if(move) {
setCursor(new Cursor(Cursor.HAND_CURSOR));
}
}
// 儅僂僗偑Canvas奜偵偱偨偲偒
public void mouseExited(MouseEvent e) {
setCursor(new Cursor(Cursor.DEFAULT_CURSOR));
}
// 儅僂僗傪墴偟偨偲偒偺張棟
public void mousePressed(MouseEvent e) {
x0 = x1 = e.getX();
y0 = y1 = e.getY();
if(loupe) {
mouseDown = true;
}else if(!move) {
changeCursor(); // 僇乕僜儖偺宍傪曄峏
}
changeActive = true;
repaint();
}
// 儅僂僗傪棧偟偨偲偒偺張棟
public void mouseReleased(MouseEvent e) {
x2 = e.getX();
y2 = e.getY();
if(loupe) {
mouseDown = false;
}else if(move) {
px = px + x1 - x2;
py = py + y1 - y2;
}else if(zoom_flag) {
changeCursor(); // 僇乕僜儖偺宍傪栠偡
parent.drag_changeZoom(y2-y1);
}else {
changeCursor(); // 僇乕僜儖偺宍傪栠偡
parent.dragDone_changeWwWl(x2-x1, x2-x0, y2-y1, y2-y0);
}
repaint();
count2 = 0;
}
}
class SetPoint_move extends MouseMotionAdapter {
// 儅僂僗偑僪儔僢僌偝傟偨偲偒
public void mouseDragged(MouseEvent e) {
int count5;
//帪娫寁應僥僗僩
count += 1;
count5 = count % 2;
if(count < count2 + 10){count5 = 1;}
x2 = e.getX();
y2 = e.getY();
changeActive = false;
if(count5 == 1){
if(move) {
px = px + x1 - x2;
py = py + y1 - y2;
// Zoom
}else if(zoom_flag) {
parent.drag_changeZoom(y2-y1);
// WW/WL
}else if(!loupe) {
parent.drag_changeWwWl(x2-x1, y2-y1);
}
x1 = x2;
y1 = y2;
repaint();
}
}
public void mouseMoved(MouseEvent e) {
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -