ورود

نسخه کامل مشاهده نسخه کامل : چطور ميشه وقتي موس را روي يك عدد ميبريم عكس مربوط به اون شماره را باز كنه ؟



s_barooni
18-02-2009, 21:45
با سلام
1- چطور ميشه برنامه اي نوشت كه وقتي موس را روي يك عدد ميبريم عكس مربوط به اون شماره را باز كنه يا بصورتThumbnail نشون بده ؟ اگه ممكنه با c# بگيد با asp.net هم كار كردم اگه تحت وب باشه بهتره .

2- اگه بجاي عكس بخوام با بردن موس روي يك شماره يك فايل eXcel يا word باز بشه امكانش هست ؟

3- قابليت اسكن كردن عكس رو چطور ميشه به برنامه اضافه كرد ؟

4- آيا حتماً بايد براي عكسهام ديتابيس داشته باشم؟

ممنون ميشم اگه راهنماييم كنيد يا اگه برنامه آماده اي هست كه بتونم ازش كمك بگيرم برام بذاريد .

s_barooni
20-02-2009, 10:20
كسي جواب نميده ؟

_H2_
20-02-2009, 23:34
سلام
1) در تحت ویندوز شما به راحتی میتوانید یک form دیگر باز کنید و در آن تصویر مربوطه را نمایش دهید:
به پست 30تاپیک زیر مراجعه کنید:
forum.p30world.com/showthread.php?p=2074948#post2074948

برای تحت وب هم طبیعتاً باید از یک div شناور و javascript استفاده کنید.

2) شما به راحتی میتوانید در رویدادهای ماووس دکمه مورد نظر هر فایل exe ای را به کمک دستور زیر اجرا کنید:
System.Diagnostics.Process.Start

3) بهتر است در نت کمی سرچ کنید و یک ocx یا کامپونتی پیدا کنید.

4) نه لزومی ندارد، شما آزاد هستید که تصاویرتان در هارد یا دیتابیس باشد، ولی گاهاً دیتابیس روشهای ساده تری ارائه میدهد.

s_barooni
21-02-2009, 21:42
سلام
ممنون از جوابتون كاربر محترم H2
كدي كه تو پست 30 اون تاپيك گذلشتين بايد با visual studio 2008 باز كنم ؟ با 2005 باز نشد .
ميشه لطفا يه كد كه تو 2005 كار كنه بذاريد؟
اگه تعداد عكس هاي كه مي خوام اينطوري نشون داده بشن خيلي زياد باشه مشكلي پيش نمياد با اين روش ؟
من بايد يه همچنين برنامه اي رو تا دوشنبه تحويل بدم اگه كمكم كنيد و برام كد بذاريد بزرگترين كمك دنيا رو به من كرديد ! قول ميدم بعد خودم تلاش كنم و به شمازحمت ندم. بازم ممنون

_H2_
23-02-2009, 00:47
سلام

يه همچنين برنامه اي رو تا دوشنبه
میبخشید کمی کار داشتم و زودتر نتوانستم سر بزنم ...


با 2005 باز نشد
بله با 2008 نوشته شده ولی کدها در 2005 هم هیچ فرقی ندارد، کافی است newproject کنید و با فرمان project->add existing item از فایلکدها در پروژه جدید خود استفاده کنید.

ضمن اینکه شما به راحتی میتوانید کدهای خام را در خود VS و حتی notepad ببینید و متوجه شوید و یادبگیرید تا کدنهایی را خودتان بسته به شرایط و سلیقه خودتان بنویسید.


اگه تعداد عكس هاي كه مي خوام اينطوري نشون داده بشن خيلي زياد باشه مشكلي پيش نمياد با اين روش ؟
از درست پیاده سازی کنید مشکلی ندارد، مثلاً شما فقط کافیست یک نمونه از فرم popup برای کل پروژه تان new کنید و نیاز نیست برای هر تصویر یک نمونه جدید بسازید...

اما برای نمایش تصاویر به صورت یک جدول دو بعدی بهتر است از از PictureBox های متعدد استفاده نکنید.
یعنی اگر بخواهید یک PictureBox برای هر تصویر قرار دهید، در تعداد تصاویر زیاد با مشکل مواجه خواهید شد.
در تعداد بالا بهتر است از کنترلر ListView استفاده کنید.
یا
خودتان یک تک PictureBox با وراثت طراحی کنید که همان یک نمونه قادر باشد در یک زمان یک آرایه ای از تصاویر را نشان دهد.
(این روش کمی سخت تر است ولی در صورت پیاده سازی صحیح نتیجه runtime خیلی پرسرعت تری میتواند داشته باشد.)

ازبابت زمان متاسفم و موفق باشید.

s_barooni
05-03-2009, 22:09
سلام
ممنون از كمك به موقع شما كاربر محترم H2
بخاطر كاري كه پيش اومده بود فرصت نشد زودتر ازتون تشكر كنم .
كاري كه گفتيد كردم و از ListView استفاده كردم ولي روي هر كدوم از آيتم هاي ListView كليك مي كنم يك عكس رو نشون ميده
از روي كدهاي شما نگاه كردم و كدي كه براي ListView نوشتم اين بود :
PrivateSub ListView1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ListView1.SelectedIndexChanged
Me.m_PopupForm.PopupShow(Me.ListView1, My.Resources.DSC07795)
EndSub
به ListView چند تا آيتم اضافه كردم فكر كنم توي اين كد براي ListView1 يك عكس رو اختصاص داديم و براي همين روي هر آيتم كليك مي كنم يك عكس رو نشون ميده
چطور بايد براي هر آيتم عكس مربوط به اون رو ارتباط داد؟

_H2_
06-03-2009, 17:12
سلام
مخزن تصاویر ListView مجزا است و در ImageList قرار دارد.
شما باید یک ImageList خالی با ابعاد تصویر مطلوب خود ایجاد کنید (مثلاً 150 یا 200 پیکسل) و تصاویر را تک تک به این ImageList اضافه کنید و Index تصویر Add شده را به ListViewItem بدهید و به ListView اضافه کنید.

1) ولی در این بین نیاز به یک کد کمکی (در حد یک تابع کوچک) دارید که تصاویر را گرفته و به طرز مناسب تغییر سایز و یک اندازه کند و سپس نتیجه و تصویر با ابعاد صحیح و مطلوب و اصلاح شده را به ImageList اضافه کنید.

2) در زمان خالی کردن ImageList (و پرکردن مجدد بر اساس یک سری جدید تصاویر) بهتر است کل تصاویر موجود در ImageList را صراحتاً Dispose کنید تا صدردصد RAM مصرف شده آزاد شود و با کمبود RAM مواجه نشوید.
البته برای افزایش سرعت و اینکه این Dispose باعث کندی نشود میتوان از ریسمانی مجزا و موازی استفاده کرد که کل ImageList و محتویاتش را از حافظه پاک کند (یک نوع جمع آوری کننده حافظه هرز یا نابود کننده شی !)

s_barooni
07-03-2009, 21:04
سلام
كاري كه گفتيد كردم البته بلد نبودم توي تابع Dispose چي بنويسم و اون مورد اول كه گفتيد هم بلد نيستم ! اما يه سوال :
الان اين مشكل كه هر كدوم از آيتم هاي listView يك عكس خاص رو نشون بده حل شد ولي يه مشكل ديگه اينه كه تابع ItemMouseHover را نميتونم براي هر كدوم از آيتم هاي ListView بنويسم . انگار فقط براي كل ListView ميشه نوشت !! اگه ممكنه راهنماييم كنيد.

_H2_
08-03-2009, 01:35
سلام

كاري كه گفتيد كردم البته بلد نبودم توي تابع Dispose چي بنويسم

منظورم ان بود که هر زمان خواستید لبیست را خالی کنید و مجدداً از نو پرش کنید کدی شبیه این را اجرا کنید ...

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید


... اون مورد اول كه گفتيد هم بلد نيستم ...
اصلاً اندازه بایتی هر تصویرتان چقدر است؟ آیا الآن مشکل کشیده شدن و مربعی شدن تصاویر غیر مربعی را دارید؟


الان اين مشكل كه هر كدوم از آيتم هاي listView يك عكس خاص رو نشون بده حل شد ولي يه مشكل ديگه اينه كه تابع ItemMouseHover را نميتونم براي هر كدوم از آيتم هاي ListView بنويسم . انگار فقط براي كل ListView ميشه نوشت !! اگه ممكنه راهنماييم كنيد.
اتفاقاً همین ItemMouseHover که گفتید در پارامتر e ای که به شما پاس میدهد، آیتم مورد نظر را که ماووس روی ان قرار دارد به شما میدهد و هیچ کار دیگری لازم ندارید !!! e.Item را بگیرد و پس از اطمینان از null نبودن عمل مورد نظر را انجام دهید.

s_barooni
08-03-2009, 09:42
سلام
اول بايد ازتون تشكر كنم كه با حوصله راهنماييم مي كنيد.
اندازه هر تصوير حدود 300 كيلو بايت است و مشكل كشيده شدن و مربعی شدن تصاویر غیر مربعی را دارم.
اما در مورد e.Item نميدونم چه تابعي بايد بنويسم فكر كنم بايد توي اين تابع براي e.Item كد بنويسم :

Private Sub ListView1_ItemMouseHover(ByVal sender As Object, ByVal e As System.Windows.Forms.ListViewItemMouseHoverEventAr gs) Handles ListView1.ItemMouseHover
End Sub
ولي نميدونم چي بنويسم؟ ممكنه يك كد نمونه برام بذلريد ؟ ممنون ميشم

_H2_
09-03-2009, 01:38
سلام

اما در مورد e.Item نميدونم چه تابعي بايد بنويسم فكر كنم بايد توي اين تابع براي e.Item كد بنويسم
خوب برای هر کاری که میخواهید انجام دهید کد بنویسید؟؟؟!!!!!! میخواهید وقتی ماووس روی تصویر آیتم رفت چه اتفاقی بیافتد؟

e.Item به همان ListViewItem ای اشاره میکند که خودتان add اش کرده بودید...
مثلاً e.Item.Text متن آن آیتم را بر میگرداند و یا e.Item.ImageIndex ایندکس تصویر آیتم در ImageList است و...


كشيده شدن و مربعی شدن تصاویر غیر مربعی را دارم.
در این مورد برایتان کدی خواهم گذاشت.

موفق باشید.

s_barooni
09-03-2009, 08:59
سلام
ميدونيد چيه ؟ من ميخوام وقتي موس رفت روي آيتم 1 عكس 1 رو نشون بده وقتي رفت رو آيتم 2 عكس 2 و ...
و نشون دادن عكسها مثل همون برنامه PopupGraphic باشه كه تو پستهاي قبل گذاشته بودين .تو اون كد براي اينكه عكس بصورت popup نشون داده بشه بايد از ( ... ) Me.m_PopupForm.PopupShow استفاده بشه . درسته ؟ اگر اينطوره e.Item كه نميتونه پارامتر اين تابع باشه . پس چطور عكس مربوط به اون آيتم رو popup نشون بدم ؟

s_barooni
12-03-2009, 10:30
كسي جواب نميده؟
لطفا يكي جواب بده

_H2_
12-03-2009, 23:04
سلام

كشيده شدن و مربعی شدن تصاویر غیر مربعی را دارم.
از کدی شبیه این برای تبدیل تصاویر به سایز درست استفاده کنید:

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
البته کد را تست نکردم ولی به نظر درست می آید.

البته حتماً از کد Dispose پست 9 هم استفاده کنید.

=====


ميدونيد چيه ؟ من ميخوام وقتي موس رفت روي آيتم 1 عكس 1 رو نشون بده وقتي رفت رو آيتم 2 عكس 2 و ...

خوب عکس های اصلی شما با سایز بزرگ کجا قرار دارند؟ یعنی اگر نام فایل تصویر را داشته باشید، چه طور و با چه متدی میخواهید از نام به تصویر برسید؟

e.Item.Text حاوی نام فایل انتخاب شده است، ضمن اینکه میتوانید از خصیصه Tag هم استفاده کنید.
یک چیزی شبیه این ...

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

s_barooni
13-03-2009, 14:03
سلام
من با اين خطا مواجه شدم :

Name 'GetImageByName' is not Declared .

كجا باد GetImageByName رو تعريف كنم؟

_H2_
14-03-2009, 01:45
سلام

كجا باد GetImageByName رو تعريف كنم؟
من ساختمان برنامه شما را نمیدانم ولی این چیزی که میگویم خیلی ساده و شفاف و راحت است و واقعاً برایم جای تعجب دارد ...
لطفاً جواب دهید:


خوب عکس های اصلی شما با سایز بزرگ کجا قرار دارند؟ یعنی اگر نام فایل تصویر را داشته باشید، چه طور و با چه متدی میخواهید از نام به تصویر برسید؟

معیار یکتای شما برای شناسایی هر تصویر چیست؟ کدی در دیتابیس یا نام واقعی یک فایل تصویری و...

=====

مثلاً اگر تصاویر شما روی هارد دیسک و مسیر C:\AAA باشد و نام نمایشی در ListView همان نام اصلی فایل باشد کدی مثل این نیاز دارید:

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

موفق باشید.