PDA

View Full Version : اجراي كند فرمهاي داراي تصوير زمينه



hozouri
پنج شنبه 11 تیر 1388, 09:42 صبح
سلام من يه فرم دارم كه يه BackGround هم داره اين تصوير در خود برنامه ساخته ميشه چون اين با نوع Bitmap به فرم ارجاع داده ميشه كمي كه نه خيلي سرعت بارگذاري فرم طول مي كشه من مي خواستم ببينم مي تونم با يك فرمت ديگه اي اين رو به فرم ارجاع بدم البته باز مي خوام اين فايل از طريق كد نويسي ايجاد بشه.

حالا شما دوستان چه راه حلي رو پيشنهاد مي كنيد ؟؟؟

newgoldenman
پنج شنبه 11 تیر 1388, 10:04 صبح
سلام.
فكر كنم موضوع این باشه:
عكس توی فرم 1 ساخته میشه، به فرم 2 پاس داده میشه برای نمایش. درسته؟
به نظر من این دو روش رو امتحان كنید بهتر از ارجاع اصلی هست.
1: عكستون رو توی یك فایل ذخیره كنید، از فرم 2 اون رو بخونید و نمایش...
2: عكستون رو توی یك MemoryStream ذخیره كنید، آدرس اون MemoryStream رو به فرم 2 پاس بدید و نمایش ...

موفق باشید.

hozouri
پنج شنبه 11 تیر 1388, 10:13 صبح
بحث سر اين نيست كه چه طور عكس ارجاع بشه چون خودم از وراثت براي اين كار استفاده كرد بحث سر اينه كه فرم به خاطر تصويري كه داره دير Refresh ميشه

newgoldenman
پنج شنبه 11 تیر 1388, 10:20 صبح
والا چه عرض كنم! این عكس توی برنامه فرمودین ساخته میشه؟ و موقع بارگزاریش كم سرعته! اگر از یك عكس آماده استفاده كنید چطوره سرعت نمایش؟ در ضمن، فكر نمیكنید اندازه و حجم زیاد عكستون ، از لحاظ كمبود فضای حافظه ی RAM دیر بارگزاری میشه؟ البته یه حدس بود.
یه نظر دیگه هم دارم كه بعد از شنیدن جوابم عرض میكنم خدمتتون!
یا علی مدد

hozouri
پنج شنبه 11 تیر 1388, 10:31 صبح
بياييد مثله رو يه جور ديگه مطرح كنيم من يه عكس براي نمايش انتخاب كردم كه رو فرم باشه حالا وقتي كه فرم مي خواد لود بشه زمان بر ميشه چون همون لحظه اتوماتيك صفحه Refresh ميشه

مهم Refresh شدنه كه زمان بره .

newgoldenman
پنج شنبه 11 تیر 1388, 10:43 صبح
شفاف سازی شد حالا! خوب...
البته این ها كه من میگم همه در حد فرضیه و نظریه هست! موقع اجرا همه چیز معلوم میشه.
شما فرم2 رو از توی فرم 1 بساز، نمایش هم بده. ولی توی برو توی initilizeComponent ، كدهای سازنده شی ء pictureBox ات رو Cut كن، ببر توی فرم 2 . توی رویداد یدونه دكمه مثلاً Paste كن! این روش رو هم تست كن. به نظرم اگه تنهایی Load بشه این عكس، سریعتر بشه!

hozouri
پنج شنبه 11 تیر 1388, 10:51 صبح
به نظرم اگه تنهایی Load بشه این عكس، سریعتر بشه!

تنهايي يعني چي

newgoldenman
پنج شنبه 11 تیر 1388, 11:12 صبح
یعنی اجزای دیگر فرم كه موقع Load شدن فرم ساخته میشن، جدا باشن. این یكی هم جدا.

hozouri
پنج شنبه 11 تیر 1388, 11:18 صبح
من نميدونم شما به چه روشي برنامه نويسي مي كنيد چون اين يه دونه فرم نيست نزديك به 70 فرمه كه نمي شه توي همه فرم ه اين كار رو كرد و بايد بهترين و سريع ترين روش در نظر گرفته بشه در ضمن من قسمت initilizeComponent پيدا نكردم ميشه راهنمايي بفرماييد

newgoldenman
پنج شنبه 11 تیر 1388, 11:26 صبح
منظورم تابع

InitializeComponent();هست كه بصورت پیش فرض در سازنده فرم قرار داره.
بدین صورت

public Form1()
{
InitializeComponent();
}حدسم باید درست باشه. سنگینی فرمهاتون باعث این افت سرعت میشه. اگه از یكی از فرمهاتون یه عكس بگیرین، ممنون میشم.
منظورم اینه كه ممكنه به دلیل زیادی كنترل های روی فرم، این مشكل بوجود اومده باشه. اگر فرمتون بدون Load شدن عكس، سرعتش عادی و خوب هست، مشكل از عكس هست. پس بهتره كه تنهایی عكس رو Load كنید. حتی میتونید از یك thread برای اینكار استفاده كنید. اینطوری كم كم عكس Load میشه، هیچ تاثیری هم توی قسمت های دیگه ی فرم نداره.
من در مقابل همه ی برنامه نویس های این سایت، عضو كوچیكی هستم. هدف از این صحبت ها ارائه ی نظرات هست و در نهایت رسیدن هر كسی به جواب سوالش. ایشالا كه هرچه زودتر مشكل شما هم حل بشه.
یا علی

hozouri
پنج شنبه 11 تیر 1388, 11:55 صبح
ببينيد فرم عكس رو بعد از InitializeComponent لود مي كنه نه قبلش روي فرم 2 و روي فرم 1 كه اصلاً لود نميشه (از اين بابت مشكلي نيست)

بعد از InitializeComponent يه دستور ارجاع داده ميشه كه فرم 2 عكس رو لود مي كنه.

newgoldenman
پنج شنبه 11 تیر 1388, 12:09 عصر
این خیلی عجیبه! عكستون دقیقاً چی هست؟ اندازه و حجم و فرمتش. این كار رو تست كنید. یدونه newApplication بسازید، توی اون فقط همون كدهاتون برای Load كردن همون عكس رو قرار بدین، ببینید باز هم مشكل داره یا نه. اگر اینطور باشه، مشكلی از لحاظ برنامه نویسی و #C نیست. برمیگرده به سخت افزارتون. راستی، رم شما چقدره؟! و اینكه موقعی كه برنامتون رو اجرا میكنید، CPU usage تا چه حد اشغال میشه؟