PDA

View Full Version : راهنهایی در مورد ImageRectangle



aminking2005
دوشنبه 26 تیر 1391, 10:37 صبح
سلام دوستان

مبدا مختصات برای تابع ImageRectangle از کجا سنجیده میشود؟

(اگر نسبت به imagecreatetruecolor سنجیده میشود خود این تابع مبداش کجاست؟)



ممنون

desatir7316
دوشنبه 26 تیر 1391, 12:01 عصر
سلام
چیزی که من میدونم imagecreatetruecolor مبداش میشه گوشه بالا سمت چپ و imagerectangle هم توی اون محدوده ای که با imagecreatetruecolor ایجاد کردی هم آفست چپ و بالا میگیره و هم طول و عرضش مشخص می شه

حالا این مثال رو ببینی بهتر متوجه میشی



<?php
// Create a 200 x 200 image
$canvas = imagecreatetruecolor(200, 200);

// Allocate colors
$pink = imagecolorallocate($canvas, 255, 105, 180);
$white = imagecolorallocate($canvas, 255, 255, 255);
$green = imagecolorallocate($canvas, 132, 135, 28);

// Draw three rectangles each with its own color
imagerectangle($canvas, 50, 50, 150, 150, $pink);
imagerectangle($canvas, 45, 60, 120, 100, $white);
imagerectangle($canvas, 100, 120, 75, 160, $green);

// Output and free from memory
header('Content-Type: image/jpeg');

imagejpeg($canvas);
imagedestroy($canvas);
?>


موفق باشی

aminking2005
دوشنبه 26 تیر 1391, 15:46 عصر
متشکر از توضیحاتتون
یک سوال دیگر:

من تابع() imagefill را به کد بالا اضافه کردم اما هر چه نتطه شروعش را تغییر می دهم فرقی نمی کند چرا؟؟


<?php
// Create a 200 x 200 image
$canvas = imagecreatetruecolor(200, 200);

// Allocate colors
$pink = imagecolorallocate($canvas, 255, 105, 180);
$white = imagecolorallocate($canvas, 255, 255, 255);
$green = imagecolorallocate($canvas, 132, 135, 28);

// Draw three rectangles each with its own color
imagefill($canvas,10,20,$green);
imagerectangle($canvas, 50, 50, 150, 150, $pink);
imagerectangle($canvas, 45, 60, 120, 100, $white);
imagerectangle($canvas, 100, 120, 75, 160, $green);

// Output and free from memory
header('Content-Type: image/jpeg');

imagejpeg($canvas);
imagedestroy($canvas);
?>

desatir7316
دوشنبه 26 تیر 1391, 21:06 عصر
رنگ کدوم مربع رو می خواید تغییر بدید؟
الان کدی رو که گذاشتید من اجرا کردم مشکلی نداشت، رنگ مربع بزرگ سیاه رنگ رو به رنگ سبز درآورد، یعنی رنگ اینو عوض کرد:
$canvas = imagecreatetruecolor(200, 200);

مشکلتون کجاست؟

aminking2005
سه شنبه 27 تیر 1391, 00:36 صبح
سلام
بله رنگ را تغییر می دهد منتها نقطه شروع imagefill را هر چه که بگذارید باز هم کل canvas را رنگ میکند!!

desatir7316
سه شنبه 27 تیر 1391, 11:12 صبح
چون هنوز هیچ مربع دیگه ای رو رسم نکردید این فقط مربع سیاه بزرگ رو در نظر می گیره البته باید توجه داشته باشید که توی این مورد هم مختصات توی fill باید توی محدوده اون مربع سیاه بزرگ باشه مثلا این کد درست کار نمی کنه(قسمت مورد نظر رو برات یه کامنت جلوش می ذارم):

<?php

// Create a 200 x 200 image

$canvas = imagecreatetruecolor(200, 200);

// Allocate colors

$pink = imagecolorallocate($canvas, 255, 105, 180);

$white = imagecolorallocate($canvas, 255, 255, 255);

$green = imagecolorallocate($canvas, 132, 135, 28);

// Draw three rectangles each with its own color

imagefill($canvas,210,220,$green);//BEBIN DOOSTE AZIZ MANZOORAM IN MOKHTASAATE KE KHAREJ AZ MOKHTASATE ON MORABA BOZORGAS KE SIAH RANGE

imagerectangle($canvas, 50, 50, 150, 150, $pink);

imagerectangle($canvas, 45, 60, 120, 100, $white);


imagerectangle($canvas, 100, 120, 75, 160, $green);



// Output and free from memory

header('Content-Type: image/jpeg');



imagejpeg($canvas);

imagedestroy($canvas);

?>

حالا اگه می خوای رنگ هرکدوم از مربع های دیگه رو تغییر بدی باید قبلش اونو رسم کنی ، اگه توی این مثال که با هم پیش بردیم بخوای روی همه مربع ها بتونی FILL رو به کار ببری باید کدش رو ببری بعد از رسم همه اونا مثل زیر(قسمت مورد نظر رو برات یه کامنت جلوش می ذارم):
توی این مثال اولین مربع کوچیکی که روی مربع سیاه اصلی رسم کردیم رو هدف قرار دادیم:

<?php

// Create a 200 x 200 image

$canvas = imagecreatetruecolor(200, 200);

// Allocate colors

$pink = imagecolorallocate($canvas, 255, 105, 180);

$white = imagecolorallocate($canvas, 255, 255, 255);

$green = imagecolorallocate($canvas, 132, 135, 28);

// Draw three rectangles each with its own color


imagerectangle($canvas, 50, 50, 150, 150, $pink);

imagerectangle($canvas, 45, 60, 120, 100, $white);


imagerectangle($canvas, 100, 120, 75, 160, $green);

imagefill($canvas,51,51,$green);


// Output and free from memory

header('Content-Type: image/jpeg');



imagejpeg($canvas);

imagedestroy($canvas);

?>

موفق و پیروز باشید