@@ -133,6 +133,19 @@ public void handle(long nanos) {
133
133
}
134
134
}
135
135
}
136
+
137
+ if (data .mouseXPressed < 0 ){
138
+ data .mouseXPressed = 0 ;
139
+ }
140
+ if (data .mouseXNow < 0 ){
141
+ data .mouseXNow = 0 ;
142
+ }
143
+ if (data .mouseXPressed > CaptureInfo .ScreenWidth ){
144
+ data .mouseXPressed = CaptureInfo .ScreenWidth ;
145
+ }
146
+ if (data .mouseXNow > CaptureInfo .ScreenWidth ){
147
+ data .mouseXNow = CaptureInfo .ScreenWidth ;
148
+ }
136
149
repaintCanvas ();
137
150
}
138
151
}
@@ -151,29 +164,37 @@ public ScreenCapture(Stage mainStage) {
151
164
rootPane .getChildren ().add (mainCanvas );
152
165
153
166
// Scene
154
- scene = new Scene (rootPane , data . screenWidth , data . screenHeight , Color .TRANSPARENT );
167
+ scene = new Scene (rootPane , CaptureInfo . ScreenWidth , CaptureInfo . ScreenHeight , Color .TRANSPARENT );
155
168
scene .setCursor (Cursor .NONE );
156
169
157
170
addKeyHandlers ();
158
171
159
172
// Canvas
160
- mainCanvas .setWidth (data . screenWidth );
161
- mainCanvas .setHeight (data . screenHeight );
173
+ mainCanvas .setWidth (CaptureInfo . ScreenWidth );
174
+ mainCanvas .setHeight (CaptureInfo . ScreenHeight );
162
175
mainCanvas .setOnMousePressed (m -> {
163
176
if (m .getButton () == MouseButton .PRIMARY ) {
164
- //data.mouseXPressed = (int) m.getScreenX();
165
- //data.mouseYPressed = (int) m.getScreenY();
166
177
data .mouseXPressed = (int ) m .getX ();
167
178
data .mouseYPressed = (int ) m .getY ();
168
179
}
169
180
});
170
181
171
182
mainCanvas .setOnMouseDragged (m -> {
172
183
if (m .getButton () == MouseButton .PRIMARY ) {
173
- //data.mouseXNow = (int) m.getScreenX();
174
- //data.mouseYNow = (int) m.getScreenY();
175
- data .mouseXNow = (int ) m .getX ();
176
- data .mouseYNow = (int ) m .getY ();
184
+ if (m .getScreenX () >= CaptureInfo .ScreenMinX &&
185
+ m .getScreenX () <= CaptureInfo .ScreenMaxX ){
186
+ data .mouseXNow = (int ) m .getX ();
187
+ }
188
+ else if (m .getScreenX () > CaptureInfo .ScreenMaxX ){
189
+ data .mouseXNow = CaptureInfo .ScreenWidth ;
190
+ }
191
+
192
+ if (m .getScreenY () <= CaptureInfo .ScreenHeight ){
193
+ data .mouseYNow = (int ) m .getY ();
194
+ }
195
+ else {
196
+ data .mouseYNow = CaptureInfo .ScreenHeight ;
197
+ }
177
198
repaintCanvas ();
178
199
}
179
200
});
@@ -327,9 +348,9 @@ private void deActivateAllKeys() {
327
348
* Repaint the canvas of the capture window.
328
349
*/
329
350
private void repaintCanvas () {
330
- gc .clearRect (0 , 0 , data . screenWidth , data . screenHeight );
351
+ gc .clearRect (0 , 0 , CaptureInfo . ScreenWidth , CaptureInfo . ScreenHeight );
331
352
gc .setFill (CommUtils .MASK_COLOR );
332
- gc .fillRect (0 , 0 , data . screenWidth , data . screenHeight );
353
+ gc .fillRect (0 , 0 , CaptureInfo . ScreenWidth , CaptureInfo . ScreenHeight );
333
354
334
355
gc .setFont (data .font );
335
356
gc .setStroke (Color .RED );
@@ -388,25 +409,25 @@ public void prepareForCapture() {
388
409
StaticLog .error (e );
389
410
}
390
411
Rectangle rectangle = CommUtils .snapScreen (MainFm .stage );
391
- data .ScreenBaseX = rectangle .x ;
412
+ data .reset ();
413
+ CaptureInfo .ScreenMinX = rectangle .x ;
414
+ CaptureInfo .ScreenMaxX = rectangle .x + rectangle .width ;
415
+ CaptureInfo .ScreenWidth = rectangle .width ;
416
+ CaptureInfo .ScreenHeight = rectangle .height ;
392
417
BufferedImage bufferedImage = ScreenUtil .captureScreen (rectangle );
393
- bufferedImage = Scalr .resize (bufferedImage , Scalr .Method .QUALITY , Scalr .Mode .AUTOMATIC , data . screenWidth * 2 , data . screenHeight * 2 );
418
+ bufferedImage = Scalr .resize (bufferedImage , Scalr .Method .QUALITY , Scalr .Mode .AUTOMATIC , CaptureInfo . ScreenWidth * 2 , CaptureInfo . ScreenHeight * 2 );
394
419
WritableImage fxImage = SwingFXUtils .toFXImage (bufferedImage , null );
395
- data .reset ();
396
- data .ScreenBaseX = rectangle .x ;
397
- data .screenWidth = rectangle .width ;
398
- data .screenHeight = rectangle .height ;
399
420
deActivateAllKeys ();
400
421
scene .setRoot (new Pane ());
401
- scene = new Scene (rootPane , data . screenWidth , data . screenHeight , Color .TRANSPARENT );
422
+ scene = new Scene (rootPane , CaptureInfo . ScreenWidth , CaptureInfo . ScreenHeight , Color .TRANSPARENT );
402
423
addKeyHandlers ();
403
- mainCanvas .setWidth (data . screenWidth );
404
- mainCanvas .setHeight (data . screenHeight );
424
+ mainCanvas .setWidth (CaptureInfo . ScreenWidth );
425
+ mainCanvas .setHeight (CaptureInfo . ScreenHeight );
405
426
mainCanvas .setCursor (Cursor .CROSSHAIR );
406
427
initGraphContent ();
407
428
rootPane .setBackground (new Background (new BackgroundImage (fxImage ,
408
429
BackgroundRepeat .NO_REPEAT , BackgroundRepeat .NO_REPEAT ,
409
- BackgroundPosition .CENTER , new BackgroundSize (data . screenWidth , data . screenHeight , false , false , true , true ))));
430
+ BackgroundPosition .CENTER , new BackgroundSize (CaptureInfo . ScreenWidth , CaptureInfo . ScreenHeight , false , false , true , true ))));
410
431
repaintCanvas ();
411
432
stage .setScene (scene );
412
433
stage .setFullScreenExitHint ("" );
@@ -421,7 +442,7 @@ private void prepareImage() {
421
442
BufferedImage image ;
422
443
try {
423
444
mainCanvas .setDisable (true );
424
- image = new Robot ().createScreenCapture (new Rectangle (data .rectUpperLeftX + data . ScreenBaseX , data .rectUpperLeftY , data .rectWidth , data .rectHeight ));
445
+ image = new Robot ().createScreenCapture (new Rectangle (data .rectUpperLeftX + CaptureInfo . ScreenMinX , data .rectUpperLeftY , data .rectWidth , data .rectHeight ));
425
446
} catch (AWTException ex ) {
426
447
StaticLog .error (ex );
427
448
return ;
0 commit comments