PDA

View Full Version : موضوعات سوالات(Handle,Pixel,تشخیص رنگ و ...)



tami_1369
پنج شنبه 09 تیر 1384, 05:21 صبح
سلام علیکم.من چند سوال دارم که میخوام شما چواب بدید.

-عزیزم بگو handle چیست و چجوری میشه اون رو بصورت کاربردی درآورد تا درصورت لزوم اون رو کنترل کرد؟
مثال :اگر بخوام رو hwnd ی Desktop windows چیزی رسم کنم بوسیله ی TCanvas باید چکار کنم؟

-آقا چیجوری میشه که hwnd زیر مویس رو شناسایی کرد(منظور وقتی مویس روی هر قسمت دسک-تاپ کامپیوتر حرکت کنه hwnd شو بگیره)؟

-چجوری میشه یه رنگ مخصوص را در عکس با سرعت زیاد(بجز استفاده از pixel)پیدا کرد؟
چون من خودم این کارو توسط pixel انجام دادم ولی سرعت خیلی پایین بود ، و از شما میخوام که یه فکر جدیدی بکنید.

-چجوری میشه رنگهای نزدیک بهم رو تشخیص داد(مثل آبی پر رنگ و آبی کم رنگ)؟
البته من خودم این کارو توسط RGB و pixel انجام دادم و مقدار Red,Green,Blue رنگ رو تا 10 مقدار جابه جا کردم و تقریبا نتیجه خوبی داد.
حالا از شما میخوام یه نظریه جدیدتری بدید تا کار دقیق انجام بشه.

-اگر من بخوام یه عکس Bitmap رو به Jpeg تبدیک کنم باید چه عملی انجام بدم؟

-چجوری میشه برای Jpeg دلفی مثل Bitmap دلفی یه چیزی عین Canvas قرار داد تا بشه رنگ موجود در تصویر رو شناسایی کرد؟

با تشکر ... Tami_1369جون

vcldeveloper
پنج شنبه 09 تیر 1384, 07:23 صبح
مثال :اگر بخوام رو hwnd ی Desktop windows چیزی رسم کنم بوسیله ی TCanvas باید چکار کنم؟


var
h : HDC;
Canvas : TCanvas;
begin
h := GetDC(0);
Canvas := TCanvas.Create;
try
Canvas.Handle := h;
Canvas.Rectangle(10,10,400,300);
Canvas.TextOut(20,20,'This is a test');
finally
Canvas.Free;
end;
end;


آقا چیجوری میشه که hwnd زیر مویس رو شناسایی کرد(منظور وقتی مویس روی هر قسمت دسک-تاپ کامپیوتر حرکت کنه hwnd شو بگیره)؟


var
P : TPoint;
h : HWND;
begin
GetCursorPos(P);
h := WindowFromPoint(p);
if h > 0 then
begin
//Write your code here
end;
end;


اگر من بخوام یه عکس Bitmap رو به Jpeg تبدیک کنم باید چه عملی انجام بدم؟


uses JPEG;

function BmpToJpg(Source, Dest: string; Quality: integer; Overwrite: boolean = false): integer;
var
Bitmap : TBitmap;
Jpg : TJPEGImage;
begin
Result := 3; //Return: Undefined error
Bitmap := TBitmap.Create;
Jpg := TJPEGImage.Create;
try
if not FileExists(Source) then
begin
Result := 1; //Return: File not found
Exit;
end;
Bitmap.LoadFromFile(Source);
Jpg.Assign(Bitmap);
Jpg.CompressionQuality := 40;
Jpg.Compress;
if FileExists(Dest) then
if not Overwrite then
begin
Result := 2; //Return: File already exists
Exit;
end;
Jpg.SaveToFile(Dest);
Result := 0; //Return: Operation is done successfuly
finally
Bitmap.Free;
Jpg.Free;
end;
end;

نحوه استفاده:


var
R : integer;
begin
R := BmpToJpg('G:\test.bmp','g:\test.jpg',true);
case R of
0 : ShowMessage('Operation is done successfully');
1 : ShowMessage('File not found');
2 : ShowMessage('File already exists');
3 : ShowMessage('An unknown error accured');
end;
end;


راستی، لطفا دفعات بعد هر سوال رو در یک تاپیک بپرسید.
موفق باشید