QL.túra

Kulturális smörgåsbord Esterházytól Wass Albertig, a gumicsizmától az iPad-ig, a Teletabiktól Sexpírig, a makrofágtól a mikrokontrollerig, miazmás...

Címkék

2000 (20) 2001 (6) 2002 (16) 2003 (164) 2004 (61) 2005 (40) 2006 (31) 2007 (28) 2008 (33) 2009 (175) 2010 (188) 2011 (201) 2012 (86) 2013 (40) 2014 (36) 2015 (26) 2016 (10) adáshiba (91) android (1) animáció (93) cygwin (3) film (410) gezarol (13) hájtek (159) hangoskönyv (32) ipad (17) klip (12) könyv (191) linux (29) színház (169) vers (17) windows (37) zene (111) Címkefelhő

+jegyzések

Most ...

... múlok .osan

bmi_tiny.png


... hallgatom
Szabó Magda: Régimódi történet
https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcSqTmZEqlCRFgojyt52Q2n_qiMTyVlt-zJu-DpbNKVY6OQbBh4u


... olvasom
Alexander Steele (szerk.): Kezdő írók kézikönyve


... (Kik ezek? Kik ezek az embek? Kik ezek?)
profile for TrueY on Stack Exchange, a network of free, community-driven Q&A sites
free counters

[Hájtek] Pixel rajzolása Java-ban

2010.09.20. 14:00 | TrueY | Szólj hozzá!

Címkék: 2010 hájtek

Életünk egy meghatározó kérdése, hogyan is lehet egy pixel-t kirajzolni Java-ban. Nem egyszerű a kérdést megválaszolni, mert explicite nem támogatja a Java ezt a törekvésünket. Némi kerülő úton mégis célt érhetünk.

Sajnos ez a böngésző nem támogatja a Java Appleteket :-(

Hogy is kell ezt összehozni? Több megoldás is adódik. A legegyszerűbb kódot innen szedtem le.

import java.awt.image.*;
import java.awt.*;
import java.applet.*;

public class CreateAnImage extends Applet {
  Image myImage;

  public void init() {
    int x = 100;
    int y = 100;
    myImage = createImage(x,y);
    Graphics g = myImage.getGraphics();
    g.drawLine(0,0,x,y);
    g.drawLine(x,0,0,y);
    for(int i=0; i < x; i+=2){
      setPixel(myImage, 50, i, new Color(0).blue);
      setPixel(myImage, i, 50, new Color(0).green);
    }
  }

  public void paint(Graphics g) {
    g.drawImage(myImage,0,0,this);
  }

  public void setPixel(Image image, int x, int y, Color color) {
    Graphics g = image.getGraphics();
    g.setColor(color);
    g.fillRect(x, y, 1, 1);
    g.dispose();
  }
}

Ez egy Image objektumot módosítgat. Mondjuk fillRect-tel kitenni egy pixelt nem a leghatékonyabb. Néhány helyen (pl. >itt<) e helyett a BufferedImage és egy ebből létrehozott WritableRaster objektumra esküsznek. Ezek jobb teljesítményt nyújtanak. De én most az egyszerűségre próbálok koncentrálni. Plusz azokat minden színmélységre meg kell bütykölni.

Szedjük le a fent említett kódot és másoljuk kedvenc szövegszerkesztőnkbe (én a vim-et ajánlom. Ajánlatos egy ":se noai"-t kiadni a ctrl+v előtt). A file neve legyen CreateAnImage.java (persze lehet más a neve, csak akkor a class nevét a file-ban nevezzük át ugyanerre). Ez után "gcj -C CreateAnImage.java"-val létrehozhatjuk a CreateAnImage.class-t. Ezt már be is tehetjük egy HTML oldalba:

<APPLET CODE=CreateAnImage.class HEIGHT=100 WIDTH=100>
</APPLET>

A blog.hu-n a file kezelő miatt trükközni kell. Ez ugyanis nem engedi meg, hogy class kiterjesztésű file-t feltöltsünk. De azt APPLET tag sem veszi jónéven, hogy a class kiterjesztést simán txt-re cseréljük. Ezt az ellentmondást kell feloldanunk valahogy. Próbálkozzunk egy jar file-lal: "jar -c -v -f createanimage_jar.txt CreateAnImage.class". Először csak egy egyszerű HTML oldaba tettem be és működik:

<APPLET CODE=CreateAnImage.class ARCHIVE=createanimage_jar.txt HEIGHT=100 WIDTH=100>
</APPLET>

No hurrá! De azért még hozzáadtam a "CODEBASE=http://qltura.blog.hu/media/file" -t is, nehogy eltévedjen! Figylem! A jar file nevében a nagy betűket nem csípi a blog.hu!

Tehát a File-kezelő fülben a file folder alá feltöltöttem a createanimage_jar.txt, majd az alábbi sorokat szúrtam be a forráskódba:

<APPLET CODE=CreateAnImage.class CODEBASE="CODEBASE=http://qltura.blog.hu/media/file" ARCHIVE=createanimage_jar.txt HEIGHT=100 WIDTH=100>
</APPLET>

Navégre működik!!! Huh!

Kávézzunk egy kicsit minden nap!

A bejegyzés trackback címe:

https://qltura.blog.hu/api/trackback/id/tr822221056

Kommentek:

A hozzászólások a vonatkozó jogszabályok  értelmében felhasználói tartalomnak minősülnek, értük a szolgáltatás technikai  üzemeltetője semmilyen felelősséget nem vállal, azokat nem ellenőrzi. Kifogás esetén forduljon a blog szerkesztőjéhez. Részletek a  Felhasználási feltételekben és az adatvédelmi tájékoztatóban.

Nincsenek hozzászólások.
süti beállítások módosítása