Java by API/org.eclipse.swt.graphics/GC

Материал из Java эксперт
Перейти к: навигация, поиск

drawText(String string, int x, int y, int flags)

import org.eclipse.swt.SWT;
import org.eclipse.swt.events.PaintEvent;
import org.eclipse.swt.events.PaintListener;
import org.eclipse.swt.graphics.Rectangle;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Canvas;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
public class MainClass {
  public static void main(String[] a) {
    final Display d = new Display();
    final Shell shell = new Shell(d);
    shell.setSize(250, 200);
    shell.setLayout(new FillLayout());
    // Create a canvas
    Canvas canvas = new Canvas(shell, SWT.NONE);
    canvas.addPaintListener(new PaintListener() {
      public void paintControl(PaintEvent e) {
        // Do some drawing
        Rectangle rect = ((Canvas) e.widget).getBounds();
        e.gc.setForeground(e.display.getSystemColor(SWT.COLOR_RED));
        e.gc.drawFocus(5, 5, rect.width - 10, rect.height - 10);
        e.gc.drawText("www.jexp.ru", 5, 50, SWT.DRAW_MNEMONIC | SWT.DRAW_DELIMITER
            | SWT.DRAW_TAB | SWT.DRAW_TRANSPARENT);
      }
    });    
    
    
    shell.open();
    while (!shell.isDisposed()) {
      if (!d.readAndDispatch())
        d.sleep();
    }
    d.dispose();
  }
}





GC: drawFocus(int x, int y, int width, int height)

import org.eclipse.swt.SWT;
import org.eclipse.swt.events.PaintEvent;
import org.eclipse.swt.events.PaintListener;
import org.eclipse.swt.graphics.Rectangle;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Canvas;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
public class MainClass {
  public static void main(String[] a) {
    final Display d = new Display();
    final Shell shell = new Shell(d);
    shell.setSize(250, 200);
    shell.setLayout(new FillLayout());
    // Create a canvas
    Canvas canvas = new Canvas(shell, SWT.NONE);
    canvas.addPaintListener(new PaintListener() {
      public void paintControl(PaintEvent e) {
        // Do some drawing
        Rectangle rect = ((Canvas) e.widget).getBounds();
        e.gc.setForeground(e.display.getSystemColor(SWT.COLOR_RED));
        e.gc.drawFocus(5, 5, rect.width - 10, rect.height - 10);
        e.gc.drawText("www.jexp.ru", 5, 50, SWT.DRAW_MNEMONIC | SWT.DRAW_DELIMITER
            | SWT.DRAW_TAB | SWT.DRAW_TRANSPARENT);
      }
    });    
    
    
    shell.open();
    while (!shell.isDisposed()) {
      if (!d.readAndDispatch())
        d.sleep();
    }
    d.dispose();
  }
}





GC: drawImage(Image image, int x, int y)

import org.eclipse.swt.events.PaintEvent;
import org.eclipse.swt.events.PaintListener;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.graphics.ImageData;
import org.eclipse.swt.graphics.Rectangle;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
public class MainClass {
  public static void main(String[] args) {
  Display display = new Display();
    final Shell shell = new Shell(display);
    final Image image = new Image(display, new MainClass().getClass().getResourceAsStream(
        "swt.png"));
    System.out.println(image.getImageData().scanlinePad);
    image.getImageData().scanlinePad = 40;
    System.out.println(image.getImageData().scanlinePad);
    shell.addPaintListener(new PaintListener() {
      public void paintControl(PaintEvent event) {
        event.gc.drawImage(image, 0, 0);
        Rectangle rect = shell.getClientArea();
        ImageData data = image.getImageData();
        int srcX = data.width / 4;
        int srcY = data.height / 4;
        int srcWidth = data.width / 2;
        int srcHeight = data.height / 2;
        int destWidth = 2 * srcWidth;
        int destHeight = 2 * srcHeight;
        event.gc.drawImage(image, srcX, srcY, srcWidth, srcHeight, rect.width
            - destWidth, rect.height - destHeight, destWidth, destHeight);
      }
    });
    shell.setText("Draw Images");
    shell.open();
    while (!shell.isDisposed()) {
      if (!display.readAndDispatch()) {
        display.sleep();
      }
    }
    image.dispose();
    display.dispose();
  }
}





GC: drawLine(int x1, int y1, int x2, int y2)

import org.eclipse.swt.SWT;
import org.eclipse.swt.events.PaintEvent;
import org.eclipse.swt.events.PaintListener;
import org.eclipse.swt.graphics.Rectangle;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Canvas;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
public class MainClass {
  public static void main(String[] a) {
    final Display d = new Display();
    final Shell shell = new Shell(d);
    shell.setSize(250, 200);
    shell.setLayout(new FillLayout());
    // Create a canvas
    Canvas canvas = new Canvas(shell, SWT.NONE);
    canvas.addPaintListener(new PaintListener() {
      public void paintControl(PaintEvent e) {
        e.gc.setLineWidth(10);
        e.gc.drawLine(0, 0, 100, 100);
      }
    });    
    
    
    shell.open();
    while (!shell.isDisposed()) {
      if (!d.readAndDispatch())
        d.sleep();
    }
    d.dispose();
  }
}





GC: drawOval(int x, int y, int width, int height)

import org.eclipse.swt.SWT;
import org.eclipse.swt.events.PaintEvent;
import org.eclipse.swt.events.PaintListener;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.widgets.Canvas;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
public class MainClass {
  public static void main(String[] a) {
    final Display d = new Display();
    final Shell shell = new Shell(d);
    shell.setSize(250, 200);
    shell.setLayout(new FillLayout());
    // Create a canvas
    Canvas canvas = new Canvas(shell, SWT.NONE);
    canvas.addPaintListener(new PaintListener() {
      public void paintControl(PaintEvent e) {
        e.gc.setForeground(e.display.getSystemColor(SWT.COLOR_BLACK));
        e.gc.drawOval(100, 20, 100, 50);
        
      }
    });    
    
    
    shell.open();
    while (!shell.isDisposed()) {
      if (!d.readAndDispatch())
        d.sleep();
    }
    d.dispose();
  }
}





GC: drawPoint(int x, int y)

import org.eclipse.swt.SWT;
import org.eclipse.swt.events.PaintEvent;
import org.eclipse.swt.events.PaintListener;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.widgets.Canvas;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
public class MainClass {
  public static void main(String[] a) {
    final Display d = new Display();
    final Shell shell = new Shell(d);
    shell.setSize(250, 200);
    shell.setLayout(new FillLayout());
    // Create a canvas
    Canvas canvas = new Canvas(shell, SWT.NONE);
    canvas.addPaintListener(new PaintListener() {
      public void paintControl(PaintEvent e) {
        Canvas canvas = (Canvas) e.widget;
        int maxX = canvas.getSize().x;
        int maxY = canvas.getSize().y;
        int halfY = (int) maxY / 2;
        e.gc.setForeground(e.display.getSystemColor(SWT.COLOR_BLACK));
        e.gc.drawLine(0, halfY, maxX, halfY);
        
        for (int i = 0; i < maxX; i++) {
          e.gc.drawPoint(i, getNormalizedSine(i, halfY, maxX));
        }
      }
      int getNormalizedSine(int x, int halfY, int maxX) {
        double piDouble = 2 * Math.PI;
        double factor = piDouble / maxX;
        return (int) (Math.sin(x * factor) * halfY + halfY);
      }      
    });    
    
    
    shell.open();
    while (!shell.isDisposed()) {
      if (!d.readAndDispatch())
        d.sleep();
    }
    d.dispose();
  }
}





GC: drawPolygon(int[] pointArray)

import org.eclipse.swt.SWT;
import org.eclipse.swt.events.PaintEvent;
import org.eclipse.swt.events.PaintListener;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.widgets.Canvas;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
public class MainClass {
  public static void main(String[] a) {
    final Display d = new Display();
    final Shell shell = new Shell(d);
    shell.setSize(250, 200);
    shell.setLayout(new FillLayout());
    // Create a canvas
    Canvas canvas = new Canvas(shell, SWT.NONE);
    canvas.addPaintListener(new PaintListener() {
      public void paintControl(PaintEvent e) {
        Canvas canvas = (Canvas) e.widget;
        int x = canvas.getBounds().width;
        int y = canvas.getBounds().height;
        e.gc.setBackground(e.display.getSystemColor(SWT.COLOR_BLACK));
        int[] upper_left = { 0, 0, 200, 0, 0, 200};
        int[] lower_right = { x, y, x, y - 200, x - 200, y};
        e.gc.fillPolygon(upper_left);
        e.gc.fillPolygon(lower_right);
        
      }
    });    
    
    
    shell.open();
    while (!shell.isDisposed()) {
      if (!d.readAndDispatch())
        d.sleep();
    }
    d.dispose();
  }
}





GC: drawRoundRectangle(int x, int y, int width, int height, int arcWidth, int arcHeight)

import org.eclipse.swt.SWT;
import org.eclipse.swt.events.PaintEvent;
import org.eclipse.swt.events.PaintListener;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.widgets.Canvas;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
public class MainClass {
  public static void main(String[] a) {
    final Display d = new Display();
    final Shell shell = new Shell(d);
    shell.setSize(250, 200);
    shell.setLayout(new FillLayout());
    // Create a canvas
    Canvas canvas = new Canvas(shell, SWT.NONE);
    canvas.addPaintListener(new PaintListener() {
      public void paintControl(PaintEvent e) {
        e.gc.drawRoundRectangle(10, 10, 200, 200, 30, 60);
        
      }
    });    
    
    
    shell.open();
    while (!shell.isDisposed()) {
      if (!d.readAndDispatch())
        d.sleep();
    }
    d.dispose();
  }
}





GC: drawText(String string, int x, int y)

import org.eclipse.swt.SWT;
import org.eclipse.swt.events.PaintEvent;
import org.eclipse.swt.events.PaintListener;
import org.eclipse.swt.graphics.Rectangle;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Canvas;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
public class MainClass {
  public static void main(String[] a) {
    final Display d = new Display();
    final Shell shell = new Shell(d);
    shell.setSize(250, 200);
    shell.setLayout(new FillLayout());
    // Create a canvas
    Canvas canvas = new Canvas(shell, SWT.NONE);
    canvas.addPaintListener(new PaintListener() {
      public void paintControl(PaintEvent e) {
        // Do some drawing
        Rectangle rect = ((Canvas) e.widget).getBounds();
        e.gc.setForeground(e.display.getSystemColor(SWT.COLOR_RED));
        e.gc.drawFocus(5, 5, rect.width - 10, rect.height - 10);
        e.gc.drawText("www.jexp.ru", 5, 50);
      }
    });    
    
    
    shell.open();
    while (!shell.isDisposed()) {
      if (!d.readAndDispatch())
        d.sleep();
    }
    d.dispose();
  }
}





GC: fillArc(int x, int y, int width, int height, int startAngle, int endAngle)

import org.eclipse.swt.SWT;
import org.eclipse.swt.events.PaintEvent;
import org.eclipse.swt.events.PaintListener;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.widgets.Canvas;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
public class MainClass {
  public static void main(String[] a) {
    final Display d = new Display();
    final Shell shell = new Shell(d);
    shell.setSize(250, 200);
    shell.setLayout(new FillLayout());
    Canvas drawingCanvas = new Canvas(shell, SWT.NONE);
    drawingCanvas.addPaintListener(new ArcExamplePaintListener());
    
    shell.open();
    while (!shell.isDisposed()) {
      if (!d.readAndDispatch())
        d.sleep();
    }
    d.dispose();
  }
}
class ArcExamplePaintListener implements PaintListener {
  public void paintControl(PaintEvent e) {
    Canvas canvas = (Canvas) e.widget;
    int x = canvas.getBounds().width;
    int y = canvas.getBounds().height;
    e.gc.setBackground(e.display.getSystemColor(SWT.COLOR_BLACK));
    e.gc.fillArc((x - 200) / 2, (y - 200) / 2, 200, 200, 0, 90);
  }
}





GC: setBackground(Color c)

import org.eclipse.swt.SWT;
import org.eclipse.swt.events.PaintEvent;
import org.eclipse.swt.events.PaintListener;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.widgets.Canvas;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
public class MainClass {
  public static void main(String[] a) {
    final Display d = new Display();
    final Shell shell = new Shell(d);
    shell.setSize(250, 200);
    shell.setLayout(new FillLayout());
    Canvas drawingCanvas = new Canvas(shell, SWT.NONE);
    drawingCanvas.addPaintListener(new ArcExamplePaintListener());
    
    shell.open();
    while (!shell.isDisposed()) {
      if (!d.readAndDispatch())
        d.sleep();
    }
    d.dispose();
  }
}
class ArcExamplePaintListener implements PaintListener {
  public void paintControl(PaintEvent e) {
    Canvas canvas = (Canvas) e.widget;
    int x = canvas.getBounds().width;
    int y = canvas.getBounds().height;
    e.gc.setBackground(e.display.getSystemColor(SWT.COLOR_BLACK));
    e.gc.fillArc((x - 200) / 2, (y - 200) / 2, 200, 200, 0, 90);
  }
}





GC: setFont(Font f)

import org.eclipse.swt.SWT;
import org.eclipse.swt.events.PaintEvent;
import org.eclipse.swt.events.PaintListener;
import org.eclipse.swt.graphics.Font;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.widgets.Canvas;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
public class MainClass {
  public static void main(String[] a) {
    final Display display = new Display();
    final Shell shell = new Shell(display);
    shell.setSize(250, 200);
    shell.setLayout(new FillLayout());
    // Create a canvas
    Canvas canvas = new Canvas(shell, SWT.NONE);
    canvas.addPaintListener(new PaintListener() {
      public void paintControl(PaintEvent e) {
        e.gc.setFont(new Font(display, "Helvetica", 18, SWT.NORMAL));
        e.gc.drawText("www.jexp.ru", 0, 0);
      }
    });    
    
    
    shell.open();
    while (!shell.isDisposed()) {
      if (!display.readAndDispatch())
        display.sleep();
    }
    display.dispose();
  }
}





GC: setLineWidth(int w)

import org.eclipse.swt.SWT;
import org.eclipse.swt.events.PaintEvent;
import org.eclipse.swt.events.PaintListener;
import org.eclipse.swt.graphics.Rectangle;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Canvas;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
public class MainClass {
  public static void main(String[] a) {
    final Display d = new Display();
    final Shell shell = new Shell(d);
    shell.setSize(250, 200);
    shell.setLayout(new FillLayout());
    // Create a canvas
    Canvas canvas = new Canvas(shell, SWT.NONE);
    canvas.addPaintListener(new PaintListener() {
      public void paintControl(PaintEvent e) {
        e.gc.setLineWidth(10);
        e.gc.drawLine(0, 0, 100, 100);
      }
    });    
    
    
    shell.open();
    while (!shell.isDisposed()) {
      if (!d.readAndDispatch())
        d.sleep();
    }
    d.dispose();
  }
}