kak se kontrolira otdelen pixel v Java?

4 отговора 116 прегледа
#1

kak se kontrolira otdelen pixel v Java?

Ot dve sedmici se ma4a da nau4a neshto za Java . Izteglih si ot Borland JBuilder5 i ponege programiram na Delphi , sviknah barzo s interfeisa.Oba4e kogato izpolzvam klasa "BufferedImage" v AppletViewer-a se polu4ava tova koeto o4akvam , no na web browse-ra mi ne e taka .Moiata cel e da polu4a kontrol nad otdelen pixel t.e. da go ocvetiavam. Ako niakoi znae kak moje da se postigne tova shte mu bada mnogo blagodaren.

Отговор
в отговор на Biser #2

Re: kak se kontrolira otdelen pixel v Java?

Ами значи, ако се мъчиш да напишеш някаква анимация най-добре да ползваш TinyPTC -> [линк]. Това е един клас, наследяващ Applet но можеш да го ползваш и като Component. Има и примерна програмка. Много лесно се работи с него и е много бърз! Определено има контрол над отделен пиксел, но цялата графика се представя като един масив от пиксели - така, че се налага да изчислиш индекса на пиксела, който търсиш - но това, мисля, не е проблем

Отговор
в отговор на Biser #3

Re: kak se kontrolira otdelen pixel v Java?

Imash li funkcia setRGB za BufferedImage obecta
drygia na4in e s PixelGraber obect
ama nai dobre tarsi na forumite na sun tam si go ima obiasneno

Отговор
в отговор на Biser #4

Re: kak se kontrolira otdelen pixel v Java?

Az niamam problem s ocvetiavaneto na daden pixel s iskan ot men cviat, dori mi se struva
,che tova mnogo lesno se postiga s BufferedImage , no vsichko e dobre dokato sam vav
JBuilder-a .Eto edin primeren cod za edna linia:
//*********************************************
package zacluba;

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

public class AppZaCluba extends Applet {
boolean isStandalone = false;
BufferedImage bi;
/**Get a parameter value*/
public String getParameter(String key, String def) {
return isStandalone ? System.getProperty(key, def) :
(getParameter(key) != null ? getParameter(key) : def);
}

/**Construct the applet*/
public AppZaCluba() {

bi=new BufferedImage(200,200,1);
DrawLineBis();
}

/**Get parameter info*/
public String[][] getParameterInfo() {
return null;
}
public void paint(Graphics g){
g.drawImage(bi,0,0,this);
}
public void DrawLineBis(){//tova e samo za primer
for (int i=10 ;i<191;i++){
Color c=new Color(255,255,255-i);
int ci=c.getRGB();
bi.setRGB(i,i,ci);
}
}
}
//**********************************************************
Tam na AppletViewer-a vsichko e nared i moga da si rendiram kakvoto si
poiskam , no sled kato pusna appleta na InternetExplorer 4.0 i mu zadeistvam JavaConsole
v neia se poluchavat slednite saobshtenia:
................................................................................................
Error loading class:java.awt.image.BufferedImage
com.ms.security.SecurityExceptionEx[zacluba/appZaCluba.<init>]:java.io.exception:
bad path:C:\Windows\jbproject\zaCluba\classes\java\awt\image\BufferedImage.class
................................................................................................
tozi path do "java\awt..." e po podrazbirane za JBuilder-a , kato az sum posochil imeto
na proecta "zaCluba".Razbira se ostatuka ot putia ne sushtestvuva izobshto ako ne napravia
slednoto neshto:
1.pribaviam kum proecta faila c:/jbuilder5/jdk1.3/src/java/awt/image/BufferedImage.java
2.compiliram nanovo proekta i taka poluchavam hem ostatuka ot putia ,hem i
BufferedImage.class
Sled tezi dve operacii saobshtenieto za greshka ot JavaConsole izchezva,no appleta pak
ne se e zaredil.
Nadiavam se vse pak da moje da se zarejdat appleti sadarjashti BufferedImage v
InternetExplorer 4.0, zashtoto tozi browser se izpolzuva mnogo.
Sushto taka iskam da vi kaja che ima znachenie i kude e postaven coda
"bi=new BufferedImage(......)",dali e v Init,Start ili niakude drugade

Отговор
в отговор на Biser #5

Re: kak se kontrolira otdelen pixel v Java?

Такааа, проблемът ти е най-вече във:
return isStandalone ? System.getProperty(key, def)

Точно System.getProperty() хвърля SecurityException когато върви в аплет.
Най-простият начин да разбереш дали е аплет е да направиш нещо подобно:

/*
<BODY>
<APPLET code=MyClass width=200 height=50>
</BODY>
*/

import java.awt.*;
import java.awt.event.*;
import java.applet.*;

public class MyClass extends Applet {
boolean isApplet = false;

public void init() { // called by appletviewer when applet is loaded
isApplet = true;
}

public static void main(String[] args) {
Frame f = new Frame("Running as Application");
f.setLayout(new BorderLayout());
f.add( new MyClass() );
f.setSize(200,200);
f.addWindowListener(
new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
}
);
f.setVisible(true);
// don't do anything - isApplet will be false
}

public void paint(Graphics g) {
String s = "Running in Frame";
if( isApplet ) {
s = "Running in Applet";
}
g.drawString(s, 10, 10);
}
}

Впрочем ако правиш някаква анимация, наистина те съветвам да използваш онази малка библиотека за която писах преди. ААА азбравих, в Java-та на Microsoft няма BufferedImage

Отговор