<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    hengheng123456789

      BlogJava :: 首頁(yè) :: 聯(lián)系 :: 聚合  :: 管理
      297 Posts :: 68 Stories :: 144 Comments :: 0 Trackbacks

    1、點(diǎn)擊鼠標(biāo)左鍵在shell里畫線。

    ?public static void main(String[] args)
    ?{
    ??Display display = new Display();
    ??final Shell shell = new Shell(display);
    ??Listener listener = new Listener() {
    ???int?lastX?= 0, lastY = 0;

    ???public void handleEvent(Event event)
    ???{
    ????switch (event.type)
    ????{
    ?????case SWT.MouseMove :
    ??????if ((event.stateMask & SWT.BUTTON1) == 0)
    ???????break; // 判斷是否為鼠標(biāo)左鍵,如果不是跳出
    ??????GC gc = new GC(shell);
    ??????gc.drawLine(lastX, lastY, event.x, event.y);
    ??????gc.dispose();
    ?????// FALL THROUGH
    ?????case SWT.MouseDown :
    ??????lastX = event.x;
    ??????lastY = event.y;
    ??????break;
    ????}
    ???}
    ??};
    ??shell.addListener(SWT.MouseDown, listener);
    ??shell.addListener(SWT.MouseMove, listener);
    ??shell.open();
    ??while (!shell.isDisposed())
    ??{
    ???if (!display.readAndDispatch())
    ????display.sleep();
    ??}
    ??display.dispose();
    ?}

    2、在彈出窗口中顯示表的當(dāng)時(shí)圖像狀態(tài)。
    ?public static void main(String[] args) {
    ??final Display display = new Display();
    ??final Shell shell = new Shell(display);
    ??shell.setText("Widget");
    ??
    ??//建立一個(gè)簡(jiǎn)單的表
    ??final Table table = new Table(shell, SWT.MULTI);
    ??table.setLinesVisible(true);
    ??table.setBounds(10, 10, 100, 100);
    ??for (int i = 0; i < 9; i++) {
    ???new TableItem(table, SWT.NONE).setText("item" + i);
    ??}
    ??
    ??//建立捕捉圖像的按鈕
    ??Button button = new Button(shell, SWT.PUSH);
    ??button.setText("Capture");
    ??button.pack();
    ??button.setLocation(10, 140);
    ??
    ??
    ??button.addListener(SWT.Selection, new Listener() {
    ???public void handleEvent(Event event) {
    ????Point tableSize = table.getSize();?//獲取表的大小
    ????GC gc = new GC(table);?//建立表的GC對(duì)象
    ????final Image image =
    ?????new Image(display, tableSize.x, tableSize.y);?//建立表大小的圖像image
    ????gc.copyArea(image, 0, 0);?//利用表的GC對(duì)象把表的圖像復(fù)制到image中
    ????gc.dispose();
    ????
    ????//建立一個(gè)彈出面板Shell對(duì)象popup
    ????Shell popup = new Shell(shell);
    ????popup.setText("Image");
    ????popup.addListener(SWT.Close, new Listener() {
    ?????public void handleEvent(Event e) {
    ??????image.dispose();
    ?????}
    ????});
    ????//在popup上建立畫布對(duì)象canvas
    ????Canvas canvas = new Canvas(popup, SWT.NONE);
    ????canvas.setBounds(10, 10, tableSize.x+10, tableSize.y+10);
    ????canvas.addPaintListener(new PaintListener() {
    ?????public void paintControl(PaintEvent e) {
    ??????e.gc.drawImage(image, 0, 0);?//在畫布上繪出表的圖像image
    ?????}
    ????});
    ????popup.pack();
    ????popup.open();
    ???}
    ??});
    ??shell.pack();
    ??shell.open();
    ??while (!shell.isDisposed()) {
    ???if (!display.readAndDispatch()) display.sleep();
    ??}
    ??display.dispose();
    ?}

    3、獲取整個(gè)窗口的圖像并顯示。
    ?public static void main(String[] args) {
    ??final Display display = new Display();
    ??final Shell shell = new Shell(display);
    ??shell.setLayout(new FillLayout());
    ??Button button = new Button(shell, SWT.PUSH);
    ??button.setText("Capture");
    ??button.addListener(SWT.Selection, new Listener() {
    ???public void handleEvent(Event event) {
    ????
    ????/* Take the screen shot */
    ????GC gc = new GC(display);
    ????final Image image = new Image(display, display.getBounds());
    ????gc.copyArea(image, 0, 0);
    ????gc.dispose();
    ????
    ????Shell popup = new Shell(shell, SWT.SHELL_TRIM);
    ????popup.setLayout(new FillLayout());
    ????popup.setText("Image");
    ????popup.setBounds(50, 50, 200, 200);
    ????popup.addListener(SWT.Close, new Listener() {
    ?????public void handleEvent(Event e) {
    ??????image.dispose();
    ?????}
    ????});
    ????
    ????ScrolledComposite sc = new ScrolledComposite (popup, SWT.V_SCROLL | SWT.H_SCROLL);
    ????Canvas canvas = new Canvas(sc, SWT.NONE);
    ????sc.setContent(canvas);
    ????canvas.setBounds(display.getBounds ());
    ????canvas.addPaintListener(new PaintListener() {
    ?????public void paintControl(PaintEvent e) {
    ??????e.gc.drawImage(image, 0, 0);
    ?????}
    ????});
    ????popup.open();
    ???}
    ??});
    ??shell.pack();
    ??shell.open();
    ??while (!shell.isDisposed()) {
    ???if (!display.readAndDispatch()) display.sleep();
    ??}
    ??display.dispose();
    ?}

    4、使用transform、alpha和paths混合技術(shù)繪圖。注意:必須在項(xiàng)目中import“swt-gdip-win32-3139.dll”。
    ?public static void main(String[] args) {
    ??final Display display = new Display();
    ??final Shell shell = new Shell(display);
    ??shell.setText("Advanced Graphics");
    ??FontData fd = shell.getFont().getFontData()[0];
    ??final Font font = new Font(display, fd.getName(), 60, SWT.BOLD | SWT.ITALIC);
    ??final Image image = new Image(display, 640, 480);
    ??final Rectangle rect = image.getBounds();
    ??GC gc = new GC(image);
    ??gc.setBackground(display.getSystemColor(SWT.COLOR_RED));
    ??gc.fillOval(rect.x, rect.y, rect.width, rect.height);
    ??gc.dispose();
    ??shell.addListener(SWT.Paint, new Listener() {
    ???public void handleEvent(Event event) {
    ????GC gc = event.gc;????
    ????Transform tr = new Transform(display);
    ????tr.translate(50, 120);
    ????tr.rotate(-30);
    ????gc.drawImage(image, 0, 0, rect.width, rect.height, 0, 0, rect.width / 2, rect.height / 2);
    ????gc.setAlpha(100);
    ????gc.setTransform(tr);
    ????Path path = new Path(display);
    ????path.addString("SWT", 0, 0, font);
    ????gc.setBackground(display.getSystemColor(SWT.COLOR_GREEN));
    ????gc.setForeground(display.getSystemColor(SWT.COLOR_BLUE));
    ????gc.fillPath(path);
    ????gc.drawPath(path);
    ????tr.dispose();
    ????path.dispose();
    ???}???
    ??});
    ??shell.setSize(shell.computeSize(rect.width / 2, rect.height / 2));
    ??shell.open();
    ??while (!shell.isDisposed()) {
    ???if (!display.readAndDispatch())
    ????display.sleep();
    ??}
    ??image.dispose();
    ??font.dispose();
    ??display.dispose();
    ?}

    5、對(duì)圖像進(jìn)行旋轉(zhuǎn)。
    ?public static void main(String[] args) {
    ??final Display display = new Display();
    ??
    ??final Image image = new Image(display, 110, 60);
    ??GC gc = new GC(image);
    ??Font font = new Font(display, "Times", 30, SWT.BOLD);
    ??gc.setFont(font);
    ??gc.setBackground(display.getSystemColor(SWT.COLOR_RED));
    ??gc.fillRectangle(0, 0, 110, 60);
    ??gc.setForeground(display.getSystemColor(SWT.COLOR_WHITE));
    ??gc.drawText("SWT", 10, 10, true);
    ??font.dispose();
    ??gc.dispose();
    ??
    ??final Rectangle rect = image.getBounds();
    ??Shell shell = new Shell(display);
    ??shell.setText("Matrix Tranformations");
    ??shell.setLayout(new FillLayout());
    ??final Canvas canvas = new Canvas(shell, SWT.DOUBLE_BUFFERED);
    ??canvas.addPaintListener(new PaintListener () {
    ???public void paintControl(PaintEvent e) {?
    ????GC gc = e.gc;
    ????gc.setAdvanced(true);
    ????if (!gc.getAdvanced()){
    ?????gc.drawText("Advanced graphics not supported", 30, 30, true);
    ?????return;
    ????}
    ????
    ????// Original image
    ????int x = 30, y = 30;
    ????gc.drawImage(image, x, y);
    ????x += rect.width + 30;
    ????
    ????Transform transform = new Transform(display);
    ????
    ????// Note that the tranform is applied to the whole GC therefore
    ????// the coordinates need to be adjusted too.
    ????
    ????// Reflect around the y axis.
    ????transform.setElements(-1, 0, 0, 1, 0 ,0);
    ????gc.setTransform(transform);
    ????gc.drawImage(image, -1*x-rect.width, y);
    ????
    ????x = 30; y += rect.height + 30;
    ????
    ????// Reflect around the x axis.
    ????transform.setElements(1, 0, 0, -1, 0, 0);
    ????gc.setTransform(transform);
    ????gc.drawImage(image, x, -1*y-rect.height);
    ????
    ????x += rect.width + 30;
    ????
    ????// Reflect around the x and y axes?
    ????transform.setElements(-1, 0, 0, -1, 0, 0);
    ????gc.setTransform(transform);
    ????gc.drawImage(image, -1*x-rect.width, -1*y-rect.height);
    ????
    ????x = 30; y += rect.height + 30;
    ????
    ????// Shear in the x-direction
    ????transform.setElements(1, 0, -1, 1, 0, 0);
    ????gc.setTransform(transform);
    ????gc.drawImage(image, 300, y);
    ????
    ????// Shear in y-direction
    ????transform.setElements(1, -1, 0, 1, 0, 0);
    ????gc.setTransform(transform);
    ????gc.drawImage(image, 150, 475);
    ????
    ????// Rotate by 45 degrees?
    ????float cos45 = (float)Math.cos(45);
    ????float sin45 = (float)Math.sin(45);
    ????transform.setElements(cos45, sin45, -sin45, cos45, 0, 0);
    ????gc.setTransform(transform);
    ????gc.drawImage(image, 350, 100);
    ????
    ????transform.dispose();
    ???}
    ??});
    ??
    ??shell.setSize(350, 550);
    ??shell.open();
    ??while (!shell.isDisposed()) {
    ???if (!display.readAndDispatch())
    ????display.sleep();
    ??}
    ??image.dispose();
    ??display.dispose();
    ?}

    posted on 2006-11-07 15:05 哼哼 閱讀(7194) 評(píng)論(2)  編輯  收藏 所屬分類: SWT

    Feedback

    # re: SWT 繪圖(GC類) 2009-06-22 13:45 geoart
    真不錯(cuò),學(xué)習(xí)了。  回復(fù)  更多評(píng)論
      

    # re: SWT 繪圖(GC類) 2011-07-14 11:55 ension
    if ((event.stateMask & SWT.BUTTON1) == 0)
    break; // 判斷是否為鼠標(biāo)左鍵,如果不是跳出
    GC gc = new GC(shell);
    gc.drawLine(lastX, lastY, event.x, event.y);
    gc.dispose();


    每次執(zhí)行觸發(fā)后都new一次?  回復(fù)  更多評(píng)論
      

    主站蜘蛛池模板: 五月婷婷综合免费| 亚洲精品亚洲人成在线播放| 免费观看大片毛片| 国产亚洲精品无码专区| 青青草免费在线视频| 无人在线观看免费高清| 一级特级女人18毛片免费视频| 亚洲日韩一区精品射精| 亚洲人6666成人观看| 亚洲一区二区三区高清| 亚洲va中文字幕无码久久| 欧美最猛性xxxxx免费| 三年片在线观看免费观看大全一| 国产免费伦精品一区二区三区| 怡红院亚洲红怡院在线观看| 亚洲字幕AV一区二区三区四区 | 深夜福利在线免费观看| 亚洲中文字幕乱码AV波多JI| 亚洲成人一级电影| 亚洲高清免费在线观看| 亚洲国产精品久久66| 亚洲电影国产一区| 亚洲视频在线观看免费| 亚洲国产综合专区电影在线| 亚洲AV无码久久精品色欲| 国产亚洲精品xxx| 亚洲熟妇av一区二区三区 | 久久精品无码专区免费| 免费国产高清毛不卡片基地| 国产亚洲综合精品一区二区三区| 亚洲国产成人久久综合| 亚洲欧美综合精品成人导航| 亚洲精品无码专区| 亚洲国产精品无码久久| 亚洲aⅴ无码专区在线观看春色| 成人亚洲国产精品久久| 青青草国产免费国产是公开 | 中文字幕人成人乱码亚洲电影 | 久久最新免费视频| 国产在线精品一区免费香蕉| 精品免费视在线观看|