PDA

View Full Version : stretch کردن عکس داخل ListView?



SYNDROME
چهارشنبه 09 مرداد 1387, 21:16 عصر
با سلام
من با استفاده از لینک زیر توانسته ام یک عکس در پس زمینه یک ListView قرار دهم.
http://barnamenevis.org/forum/showthread.php?t=76345&highlight=%D8%B9%DA%A9%D8%B3+ListBox
پست 6
چطور می توانم عکس را در پس زمینه Stretch کنم.یعنی عکس به اندازه ListView بشود و پس زمینه را کاملا پر کند.
با تشکر از دوستان

Hsimple11
پنج شنبه 10 مرداد 1387, 00:58 صبح
متد StretchDraw را امتحان کنید من در مورد ListView امتحان نکردم.


Image1.Canvas.StretchDraw(Image1.Canvas.ClipRect, MyPic);

و محدوده Rect را برای Stretch کردن Image با ListView خود Set کنید.

SYNDROME
پنج شنبه 10 مرداد 1387, 06:42 صبح
متد StretchDraw را امتحان کنید من در مورد ListView امتحان نکردم.

Image1.Canvas.StretchDraw(Image1.Canvas.ClipRect, MyPic);
و محدوده Rect را برای Stretch کردن Image با ListView خود Set کنید.
با تشکر از شما
دوست عزیز روشی که من دارم استفاده می کنم با Image نیست.
اگر پست 6 تاپیکی که لینک آن را قرار دادم ببینید یک مثال وجود دارد که من از آن استفاده می کنم.
موفق باشید

Hsimple11
پنج شنبه 10 مرداد 1387, 07:22 صبح
با تشکر از شما
دوست عزیز روشی که من دارم استفاده می کنم با Image نیست.

این روش مگر منظورتان نیست؟


procedure TForm1.ListView1CustomDraw(Sender: TCustomListView;
const ARect: TRect; var DefaultDraw: Boolean);
var jpg :TJpegImage;
Bmp :TBitMap;

begin
//we creat the images
Jpg := TJpegImage.Create;
Bmp := TBitMap.Create;

Try
// the full path of the image
Jpg.LoadFromFile('C:\image1.jpg');
//we adapte the image with the listview
Bmp.Width := Listview1.Width;
Bmp.Height := Listview1.Height;
//we extract the image
Bmp.Canvas.StretchDraw(Bmp.Canvas.ClipRect,Jpg);
Jpg.Assign(Bmp);
// we give the image to the listview
ListView1.Canvas.CopyRect(Arect,Bmp.Canvas,ARect);
Finally
//we free the recsources
Jpg .Free;
Bmp .Free;
end;


image نیست؟ منظورم کنترل Image نبود. برای هر چیزی که Canvas تعریف شود میتوانید از StretchDraw استفاده کنید. در همین کد هم میبینید برای اینکه JPEG را در BMP بریزد از همین روش استفاده کرده است.

SYNDROME
پنج شنبه 10 مرداد 1387, 09:41 صبح
دوست عزیز پست 6 منظورم است.
پستی که آقای Valadi فایل با نام TListviewBackgroundImage (http://barnamenevis.org/forum/attachment.php?attachmentid=10374&d=1187507497) را Attach کرده است.
موفق باشید

vcldeveloper
پنج شنبه 10 مرداد 1387, 11:05 صبح
باید یک BITMAP تعریف کنید و طول و عرض آن و تصویر آن را متناسب با اندازه ListView تنظیم کنید و آن را به فیلد hbm از رکورد TLVBKIMAGE اختصاص بدید، بعد از همون روشی که در پست شماره 6 همان تاپیک معرفی شده برای تنظیم پس زمینه ListView استفاده کنید.
http://msdn.microsoft.com/en-us/library/bb774742(VS.85).aspx

SYNDROME
پنج شنبه 10 مرداد 1387, 20:03 عصر
باید یک BITMAP تعریف کنید و طول و عرض آن و تصویر آن را متناسب با اندازه ListView تنظیم کنید و آن را به فیلد hbm از رکورد TLVBKIMAGE اختصاص بدید، بعد از همون روشی که در پست شماره 6 همان تاپیک معرفی شده برای تنظیم پس زمینه ListView استفاده کنید.
http://msdn.microsoft.com/en-us/library/bb774742(VS.85).aspx
ممنون از شما
من دقیقاً یک bitmap را create کردن و عکس را داخل آن Load کردن ولی نتوانستم آن را تغییر دهم و در پس زمینه قرار دهم.
اگر امکان داشته باشد تکه کد فوق را برای بنده بنویسید ممنون می شود.
موفق باشید

vcldeveloper
جمعه 11 مرداد 1387, 02:57 صبح
این مقاله را بخونید:
Add Watermark / Background Image to Listview (http://www.kidmoses.com/components/watermark.html)

کاری که برای نمایش Watermark کرده، همون چیزی هست که شما می خواید. می تونید بجای LVBKIF_TYPE_WATERMARK در سورسی که ضمیمه کرده، از LVBKIF_SOURCE_HBITMAP استفاده کنید. برای اندازه تصویر هم هر طول و عرضی به LoadImage بدید، این تابع تصویر را به همان اندازه Stretch میکنه. اگر صفر بدید، با اندازه اصلی رسم میشه.
همچنین درباره برطرف کردن پرش زمان تغییر سایز ستون های ListView هم توضیح داده.