Subscribe

Powered By

Free XML Skins for Blogger

Powered by Blogger

Bismillahirrohmanirrohimm

Bismillahirrohmanirrohimm
Segala puji kehadiratmu ya rob, yang sebagaimana telah memberikan segala kekuatan bagi seluruh Makhluknya .Segalapuji untukmu yaAlloh, Aminn...
..:: Selamat datang di site of Hisyam Wahid Luthfi , h e is an enginer of tel komunikasi from rembang , and thank you before for some one who was help me to forward. andh be happy t read this site ., thank yu for ALL ,, ::..
Tampilkan postingan dengan label Java. Tampilkan semua postingan
Tampilkan postingan dengan label Java. Tampilkan semua postingan

Sabtu, 28 Juni 2008

How to make a Link to Another Page

Making links is VERY easy. Here is the command:

For example, to make a link on your page to here it would look like this:


This will make a link but you won't be able to see it or use it, to make it work you have to put some text in between the command and the command. You have to include the tag at the end of every link or the rest of your page will be the link!
How to make a link to another page in the same directory

Making a link to a page in the same directory as your intitial page is VERY VERY easy. Here is the script to do it.




For Example, here is how I made a link from this page to the page that shows you colors:


How to make an Image on your Pag

OK, this is also an extremely simple command. It's basically a link but a little different. Here is the script:





How to make Images Into Links

Making images into Links is as easy as combining the two commands:



You have to make sure that the actual Link reference comes before the image. Also the link closing tag has to come last.

How to control the size of your Images

To do this all you have to do is add this into your image command:
width=whatever height=whatever
For example, here it is all together:




How to make text appear beside an image

Have you ever noticed that when you type beside an image the text only starts at the bottom of the pic and you end up with a big empty space? Well, this little addition to the image command will solve that problem:

align=right or align=left
For example, here it is all together:



You don't need to have the height and width in there. This command will do this:
Hey.. this text is at the top and not the bottom. How convenient eh?

How to make "freestyle" text

Making "freestyle"(in other words, text "as is") text is as easy as making it bold or italic. Here is the script:


Here you put your writing.


This way you can do whatever you want, write song lyrics without them turning into a paragraph, write words in list form, etc.

How to make a link that opens a new browser Window

This is as easy as adding a command at the end of the link command. Here is the command:

target=body
For example, here it is all together:



This will open a new window when you make a link, especially useful when making links in chats.




Read More Brow!!!!!!!

Rabu, 25 Juni 2008

JAVA

The J2ME architecture is based on families and categories of devices. A category defines a particular kind of device; cellular telephones, simple pagers, and organizers are separate categories. A family of devices is made up a of a group of categories that have similar requirements for memory and processing power. Together, cellular phones, simple pagers, and simple personal organizers make up a single family of small-footprint devices.

Figure 1 defines the relationship between the famFigure 1. Families and categories of devices
Families and categories of devices

In order to support the kind of flexibility and customizable deployment demanded by the family of resource-constrained devices, the J2ME architecture is designed to be modular and scalable. This modularity and scalability is defined by J2ME technology in a complete application runtime model, with four layers of software built upon the host operating system of the device.

Figure 2 shows the J2ME architecture.

Figure 2. The J2ME architecture
The J2ME archtiecture

* Java Virtual Machine layer: This layer is an implementation of a Java Virtual Machine that is customized for a particular device's host operating system and supports a particular J2ME configuration.
* Configuration layer: The configuration layer defines the minimum set of Java Virtual Machine features and Java class libraries available on a particular category of devices. In a way, a configuration defines the commonality of the Java platform features and libraries that developers can assume to be available on all devices belonging to a particular category. This layer is less visible to users, but is very important to profile implementers.
* Profile layer: The profile layer defines the minimum set of application programming interfaces (APIs) available on a particular family of devices. Profiles are implemented upon a particular configuration. Applications are written for a particular profile and are thus portable to any device that supports that profile. A device can support multiple profiles. This is the layer that is most visible to users and application providers.
* MIDP layer: The Mobile Information Device Profile (MIDP) is a set of Java APIs that addresses issues such as user interface, persistence storage, and networking.

The Java Virtual Machine layer, configuration layer, and profile layer together constitute the Connected Limited Device Configuration (CLDC). The MID Profile and CLDC provide a standard runtime environment that allows new applications and services to be dynamically deployed on end-user devices.


Back to top


Programming J2ME with MIDP APIs: The building blocks

The combination of CLDC and MIDP provides a complete environment for creating applications on cell phones and simple two-way pagers.

The core of a MID Profile is a MIDlet application. The application extends the MIDlet class to allow the application management software to control the MIDlet, retrieve properties from the application descriptor, and notify and request state changes.

All MIDlets extend the MIDlet class -- the interface between the runtime environment (the application manager) and the MIDlet application code. The MIDlet class provides APIs for invoking, pausing, restarting, and terminating the MIDlet application.

The application management software can manage the activities of multiple MIDlets within a runtime environment. In addition, the MIDlet can initiate some state changes by itself, and notify the application management software of those changes.

The whole set of MIDP API classes can be broken down into two categories:

* MIDP APIs for the user interface: These APIs are designed so that interaction with the user is based around a succession of screens, each of which presents a reasonable amount of data to the user. Commands are presented to the user on a per-screen basis. The APIs allow the application to determine what screen to display next, what computation to perform, and what request to make of a network service.
* MIDP APIs for handling the database: These APIs organize and manipulate the devices database, which comprises information that remains persistent across multiple invocations of the MIDlet.

The underlying CLDC API is used to handle strings, objects, and integers. A subset of the Java 2 API is also provided to handle I/O and network communications.

Figure 3 shows the building blocks of J2ME.

Figure 3. The building blocks of J2ME
The building blocks of J2ME

The relationship between the standard and micro edition Java APIs is shown in Figure 4.

Figure 4. The relationship between the J2ME and J2SE APIs
The relationship between the J2ME and J2SE APIs

Event handling in J2ME

Event handling in J2ME, in contrast to event handling on the desktop version of the Java platform, is based around a succession of screens. Each screen carries a certain small amount of data.

Commands are presented to the user on a per-screen basis. The Command object encapsulates the name and information related to the semantics of an action. It is primarily used for presenting a choice of actions to the user. The resulting command behavior is defined in a CommandListener associated with the screen.

Each Command contains three pieces of information: a label, a type, and a priority. The label is used for the visual representation of the command; the type and priority are used by the system to determine how the Command is mapped onto a concrete user interface.

Figure 5 shows the event handling mechanism in J2ME.

Figure 5. Handling user events in J2ME
Handling user events in J2ME

Designing the user interfaces

Although it maintains a constrained profile, the MIDP API provides a complete set of UI elements. The following are some of the most important ones:

* An Alert acts as a screen to provide information to the user about an exceptional condition or error.
* A Choice implements a selection from a predefined number of choices.
* A ChoiceGroup provides a group of related choices.
* A Form acts as a container for the other UI elements.
* A List provides a list of choices.
* A StringItem acts as a display-only string.
* A TextBox is a screen that allows the user to enter and edit text.
* A TextField allows the user to enter and edit text. Multiple TextFields can be placed in a Form.
* A DateField is an editable component for presenting date and time information. A DateField can be placed in a Form.
* A Ticker acts as a scrollable display of text.

A complete list of UI elements is available in the MID Profile API documentation that accompanies the J2ME Wireless Toolkit (see Resources below for more information).

Managing the device database

The MIDP provides a set of classes and interfaces to organize and manipulate a device's database: RecordStore, RecordComparator, and RecordFilter. A RecordStore consists of a collection of records, which remain persistent across multiple invocations of the MIDlet. Comparing records in a RecordStore or extracting sets of records from a RecordStore is functionality provided by RecordComparator and RecordFilter interfaces.


Back to top


Developing J2ME applications

The previous sections have given an overview of J2ME. In this section, we will acquaint ourselves with the practical details of the platform through development of a real-world application on a phone interface.

A sample application: Phone calendar

One of the notable features in J2ME is its date manipulation functionality in a constrained environment. The DateField UI Item offered by J2ME is an editable component for presenting calender information (i.e., date and time). In this section, we will develop a J2ME application that displays a scrolling calendar on a cell phone UI, using DateField and Date functions.

A phone calendar application



// Import of API classes
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
import java.util.*;

//A first MIDlet with simple text and a few commands.
public class PhoneCalendar extends MIDlet
implements CommandListener, ItemStateListener {

//The commands
private Command exitCommand;

//The display for this MIDlet
private Display display;

// Display items e.g Form and DateField
Form displayForm;
DateField date;

public PhoneCalendar() {
display = Display.getDisplay(this);
exitCommand = new Command("Exit", Command.SCREEN, 1);
date = new DateField("Select to date", DateField.DATE);

}

// Start the MIDlet by creating the Form and
// associating the exit command and listener.
public void startApp() {
displayForm = new Form("Quick Calendar");
displayForm.append(date);
displayForm.addCommand(exitCommand);
displayForm.setCommandListener(this);
displayForm.setItemStateListener(this);
display.setCurrent(displayForm);
}

public void itemStateChanged(Item item)
{
// Get the values from changed item
}

// Pause is a no-op when there is no background
// activities or record stores to be closed.
public void pauseApp() { }

// Destroy must cleanup everything not handled
// by the garbage collector.
public void destroyApp (boolean unconditional) { }

// Respond to commands. Here we are only implementing
// the exit command. In the exit command, cleanup and
// notify that the MIDlet has been destroyed.
public void commandAction (
Command c, Displayable s) {
if (c == exitCommand) {
destroyApp(false);
notifyDestroyed();
}
}


}


The PhoneCalendar MIDlet as defined above extends an ItemListener and a CommandListener. It gives the MIDlet the capability of tracking an item change on the screen and responding to user commands. The user interface initiative by this application begins by defining a display for the phone screen and attaching a Form to it. The Form acts as a container and can hold a number of user interface items. The commandAction() function acts a command handler in J2ME and defines the actions to be taken for a certain command.


Back to top


Deploying J2ME

You can download an emulator from Sun that allows you to test J2ME applications on your desktop system. If you'd rather shun all that graphical overhead, you can also deploy J2ME on your command line.

Deploying in an emulated environment

Deploying and running a J2ME application in an emulated environment involves the installation and configuration of an emulator. The J2ME Wireless Toolkit provides an emulated environment for development and deployment of Java applications on top of resource-constrained devices. Here's how to get yourself up and running:

1. Install the J2ME Wireless Toolkit (see Resources). The installer program will guide you with necessary instructions. Choose a standalone mode for running these examples. Choose an integrated mode in case you want to integrate it with an IDE.
2. Create a new project through the user interface of KToolbar. Indicate a class name.
3. Place the class name from Step 2 in the C:\[J2ME Installation directory]\apps\[Project Name]\src directory.
4. Build the project.
5. Choose DefaultGrayPhone as a default device from J2ME Wireless Toolkit -> Default Device Selection.
6. Run the project.

The toolkit also provides an option to package the project into a jar file and a jad file. A double-click on the jad file will deploy the application indicated by the jar file.

Deploying on the command line

A number of command-line options are also available.

1. Create the classfile:

C:\J2ME\apps\PhoneCalendar>
javac _ tmpclasses _ootclasspath
C:\J2ME\lib\midpapi.zip -classpath tmpclasses;
classes src\*.java


2. Create a manifest file, manifest.mf:

MIDlet-1: PhoneCalendar,
PhoneCalendar.png,
PhoneCalendar
MIDlet-Name: Phone Calendar
MIDlet-Vendor: Sun Microsystems
MIDlet-Version: 1.0
MicroEdition-Configuration: CLDC-1.0
MicroEdition-Profile: MIDP-1.0


3. Create a jar file:

C:\J2ME\apps\PhoneCalendar>jar cfm .\bin\
PhoneCalendar.jar
manifest.mf -C classes . _ res .


4. Create a jad file:

MIDlet-1: PhoneCalendar,
PhoneCalendar.png,
PhoneCalendar
MIDlet-Jar-Size: 4490
MIDlet-Jar-URL:
F:\J2ME\apps\PhoneCalendar\bin\
PhoneCalendar.jar
MIDlet-Name: PhoneCalendar
MIDlet-Vendor: Sun Microsystems
MIDlet-Version: 1.0


5. Run the jad file:

C:\J2ME\bin> emulator -Xdescriptor:
C:\J2ME\apps\PhoneCalendar
\bin\PhoneCalendar.jad




Back to top


The bottom line

J2ME is a significant wireless move from the portable, network-centric Java Virtual Machine. The flexibility in development and deployment of J2ME applications will efficiently cater to the increasing requirements of the wireless world. Stay connected!

Read More Brow!!!!!!!

Kamis, 01 Mei 2008

melanjutkan Java sesi ke II

Sebelum kita melanjutkan pemrograman yang kemaren, Alangkah baiknya jikalao kiat mengingat-ingat pelajaran yang kemaren , untuk itu penulis menyertakan beberapa revrensi untuk ini , kmu dian lang sung kita mulai ajaTUTORIAL: Dasar2 Java - Printable Version+- Golden T Studios (http://www.goldenstudios.or.id/forum)+-- Forum: Indonesian Section (/forumdisplay.php?fid=49)+--- Forum: Artikel Bahasa Indonesia (/forumdisplay.php?fid=41)+--- Thread: TUTORIAL: Dasar2 Java (/showthread.php?tid=437)Bagi temen2 yg baru sekali ini belajar Java..Ini ada tutorial singkat mengenai cara membuat file Java, mengcompile file Java tersebut, dan bagaimana menjalankan program Java. Dibagian ini juga akan membahas sedikit tentang variabel dalam Java..Silahkan mengikuti Okey skrg gw kasih tutorial singkat mengenai Java, bukan tutorial game, melainkan tutorial dasar-dasar Java, untuk membantu yang bener2 pemula sama sekali ^_^

LANGKAH 1: Membuat kode program Java

Nah hal pertama adalah, bagaimana asal mula suatu program aplikasi Java?Untuk menjalankan program Java, pertama-tama kita buat file teks (txt) biasa, beri nama dengan format penamaan TitleCase dan akhiri dengan extension .java :Misalnya Test.javaUntuk mengisi kode programnya, edit file tersebut dengan menggunakan teks editor apa saja, misalnya Notepad.

FILE :: Test.java

Isikan kode programnya:
Code:
public class Test { // Test -> sesuai dengan nama filenya: Test.java // (ingat Java case sensitive, Test berbeda dgn test)}
PS: "//" adalah komentar, apapun yang ditulis setelah // tidak akan diprosesPS2: sekali lagi Java adalah case sensitive, penulisan harus benar2 memperhatikan huruf kecil dan huruf besar.

LANGKAH 2: Mengcompile kode program kita

Compile kode program yang telah kita buat dengan menggunakan Java compiler (javac.exe) yang telah termasuk dalam bundel Java SDK (J2SE), dapatkan Java SDK di http://java.sun.com/j2se/.

Gunakan DOS Prompt, buka melalui Start menu-Run-ketik CMD.Tuliskan ini di DOS prompt :
Code:
javac Test.java
Setelah dicompile Test.java akan menghasilkan Test.class
Quote:Test.java (kode program) compile -> Test.class (java bytecode)

LANGKAH 3: Menjalankan program tersebutUntuk menjalankan program yang telah kita compile diatas digunakan Java launcher (java.exe), juga melalui DOS prompt :
Code:
java Test

Pada tahap ini program kita diatas akan mengeluarkan error tidak dapat dijalankan, karena Java tidak tahu harus dimulai darimana program aplikasi kita ini.LANGKAH 4: Membuat start awal aplikasiStart awal jalannya suatu aplikasi Java dimulai dari ditemukannya kata kunci (keyword) :
Code:
public static void main(String[] args) { }
Nah tinggal tambahkan keyword tersebut ke file Test.java kita :
Code:
public class Test { public static void main(String[] args) { // application start-point }}

Jadi program Test.java diatas sudah dapat dicompile DAN dijalankan.Tapi karena isinya kosong, jadi program kita tsb tidak melakukan suatu hal apapun, sungguh suatu program yang tak berguna java Test -> masuk ke bagian application start-point dan selesai, tidak ada yang dikerjakan.

LANGKAH 5: Mengeluarkan suatu tulisan

Nah untuk mengeluarkan output ke console (DOS prompt) kita gunakan fungsi: System.out.println("kata") :
Code:
public class Test { public static void main(String[] args) { System.out.println("Hello World!"); }}

Program kita diatas ketika dijalankan akan mengeluarkan tulisan Hello World ke console. Ah ha! Akhirnya program kita sudah jalan dan mengerjakan sesuatu, apakah Anda sudah cukup senang sekarang?! Nah selanjutnya kita akan mengenal variabel2 dalam bahasa program Java.LANGKAH 6: Mengenal variabel serta jenis-jenisnyaNah setelah kita mengetahui bagaimana dasar aplikasi Java dari membuat file berekstensi .java sampai menjalankannya, sekarang saatnya untuk berkenalan dengan jenis-jenis variabel yang terdapat dalam Java.Jadi apa itu variabel??Untuk menyimpan nilai tertentu di dalam program aplikasi kita (memori komputer), nilai tersebut haruslah disimpan sesuai kedalam suatu variabel yang tipenya sesuai dengan tipe dari nilai tersebut.Kita tidak dapat menyimpan tipe bernilai angka ke variabel bertipe nilai huruf ataupun sebaliknya.Pada bahasa pemograman Java, tipe-tipe variabel yang tersedia diantaranya :
Quote:
- int : untuk menyimpan nilai berupa angka bilangan bulat, misalnya: 10- double : untuk menyimpan nilai berupa angka bilangan desimal, misalnya: 0.5

- String : untuk menyimpan nilai berupa teks kata-kata, misalnya: "Hello World"

- boolean : untuk menyimpan nilai sederhana iya atau tidak, misalnya: true
Untuk mendeklarasikan variabel yang dapat menyimpan nilai tersebut cukup dengan menggunakan:
Code:
[tipe_variabel] [nama_variabel];
misalnya: int tipeInt; pendeklarasian variabel bernama tipeInt sebagai variabel bertipe int

Untuk mengisikan nilai ke variabel tsb gunakan tanda =
Code:
int tipeInt; tipeInt = 10; // mengisi tipeInt dengan nilai 10
Contoh dalam program:
Code:
public class Test { public static void main(String[] args) {

int a = 10;

double b = 0.5;

String c = "Halo";

boolean d = true;

// mengeluarkan nilai diatas ke console

System.out.println(a); // console tertulis: 10

System.out.println(b); // console tertulis: 0.5

System.out.println(c); // console tertulis: Halo

System.out.println(d); // console tertulis: true // ganti nilai variabel a a = 100;

System.out.println(a); // console tertulis: 100 }}
Setelah kita mengetahui jenis-jenis tipe variabel dan bagaimana menggunakannya, sekarang kita lihat bagaimana cara mengolahnya/memanipulasinya.LANGKAH 7: Operasi variabelVariabel tersebut dapat kita olah sama seperti didalam matematika, yakni dengan menggunakan operasi pertambahan (+), pengurangan (-), perkalian (*), pembagian (/), ataupun hasil bagi (%). Misalnya: int a = 10 + 10; // pertambahanTidak ada yang spesial dalam mengolah data variabel tersebut, cukup gunakan tanda +, -, *, /, %

Contoh:
Code:
public class Test { public static void main(String[] args) { int a = 10; int b = 20; int c = a + b; // 10 + 20 = 30 int d = a - b; // 10 - 20 = -10 System.out.println(a); System.out.println(b); System.out.println(c); System.out.println(d); double e = 2; double f = 4; double g = e * f; // 2 x 4 = 8 double h = e / f; // 2 / 4 = 0.5 System.out.println(e); System.out.println(f); System.out.println(g); System.out.println(h); System.out.println(5 % 3); // = 2 -> 5 / 3 = 1 sisa 2 }}
Java juga menyediakan cara untuk mempersingkat operasi tertentu:
Code:
int a = 0;

// menambah dengan 10

cara 1: a = a + 10;

cara 2: a += 10; // lebih singkat
Sama halnya dengan pengurangan, perkalian, pembagian.
Code:
a -= 10;

a *= 10;

a /= 10;
Dan Java juga menyediakan khusus penyingkatan untuk penambahan/pengurangan dengan 1:
Code:
a = a + 1; -> a += 1; -> a++;

a = a - 1; -> a -= 1; -> a--;

egitulah ulasan singkat dari Paupau si pembuat tutorial ini, semoga temen2 bisa mendapatkan dasar untuk belajar Java, selanjutnya mungkin akan banyak lagi ulasan2 menarik ttg Java..tunggu saja update terbarunya di post ini, atau apabila temen2 merasa tidak punya waktu untuk menunggu..temen2 bisa membaca tutorial java di :http://java.sun.com/docs/books/tutorial/

Read More Brow!!!!!!!

Rabu, 30 April 2008

Belajar Java

Sedikit ulasan tentang java ,Java adalah suatu bahasa pemrograman yang berorientasi ke object Kita sering mengenalnya dengan OOP (Orientasi Objeck Programming) Untuk itu kita akan belajar dari 0% UNTUK menjadi 100% , untuk selanjutnya kita mulai projek sederhana yang pertama jika kita akan mencoba,, maka kita siapkan peralatan yang akan kita pakai untuk Experimen iniyang pertama semua peralatan harus Ter sedia Sesuai dengan Cara kerja nya,,
ya kita muali dari awal sekareang
di java itu ada istilah2:
class,object,atribut,method

aku jabarin ya:

kalo kita mau buat kue...pasti kita persiapkan bahan2 dulu ya kan..
misal kita mau buat kue bolu ya....

bolu itu yang mau kita makan...itu produk jadinya yang bermanfaat atau yang kita inginkan
nah disebut object

untuk nyetak bolu, kita perlu cetakan yang kita sebut class
yaitu tempat mencetak object

yang kita perluinkan:
tepung, telor, gula,coklat,vanili--> bahan2
bahan2 itu dinamakan atribut
misalkan itu aja...gw belom pernah nich buat bolu sendiri weekkkkkk

trus cara ngebuatnya itu kan dikukus bisa dibakar ya kan??
nah itu dinalogikan sebagai method

jadi untuk membuat semua nya kita masukinnya di cetakan ya kan???
berarti kita lakukan di dalam class

contoh program sederhana

class Bolu {

public static void main(String args[]) //untuk pertama kali bagian inilah yang dieksekusi...disinilah tempat pembuatan objek baru
{
System.out.println("Masak yuk!!");
}
}

silahkan simpan dengan nama Bolu.java
biar mudah mengingat, kita berikan nama file sama dengan nama class
cara compile:
ketik: javac Bolu.java
kemudian ketik lagi : java Bolu
hati2 case sensitif maksudnya nama Bolu.java yang setelah javac itu adalah nama file sesuai dengan yang kamu simpen...
nah liat penulisannya hari2 kalo didepannya huruf gede Bolu nah pas compile harus Bolu juga ga boleh bolu

coba ya kamu coba jalan ga programnya yang diatas nanti kita lanjutkan ke program sederhana kedua

Read More Brow!!!!!!!

WRITTER

WRITTER

makkah Al- mukarromah

makkah Al- mukarromah
semoga Alloh memberijalan , aminnn..aminnn.. Semua orang islam pasti ingin pergi kesana untuk menyerahkan diri sepenuhnya hak semata - mata untuk Alloh Subhanahu Wataala ... semoga semua hambanya penuh rahmat dariNYA ....aminn

about coreill


Dalam Tutorial Kali ini saya mencoba menjelaskan kepada anda bagaimana cara membuat suatu bercak noda, baik itu noda tinta, darah, noda bersejarah, kendaraan bernoda empat, halah! :D walaupun sebetulnya internet menyediakan secara gratis font symbol bercak-bercak tersebut, seperti WC Rhesus A, WC Rhesus B, etc.

Silahkan anda mengawalinya dengan membuat new file, kemudian buatlah sebuah lingkaran ( F7 ), untuk membuat suatu lingkaran anda cukup me-klik ctrl kemudian drag.
Untuk contoh, disini saya memakai diameter 831 pixel

setelah itu klik kanan object tersebut, pilih convert to curve, ini perlu dilakukan untuk mempermudah smudge brush nanti.

kemudian silahkan anda atur object lingkaran tersebut sedemikian rupa , sehingga terlihat seperti sebuah bercak yang jatuh dari atas
saya membuatnya seperti ini :

kemudian pilih smudge brush dan isi enter a fixed value for tilt setting dengan nilai 90






setelah itu anda bisa merubah bentuk object tersebut sedemikian rupa dengan shape tool





dan inilah hasil akhir dari penjelasan tutorial ini.

Anda dapat mendownload file mentahnya dalam format cdr di sini

http://h1.ripway.com/ilmuwebsite/Al-k/bercak/bercak.cdr

Ya, cukup sekian saja tutorial design grafis untuk kali ini. Kalo ada pertanyaan langsung aja ditanyakan. :D
Sumber dari situs Ilmu Website dalam kategori coreldraw dengan judul Membuat Bercak Noda dengan SmudgeBrush

ME BANNEER

Blog HISYAM