এটি ডাবল বাফারিং সমাধান করতে পারে এমন ঝাঁকুনি নয়। বা বিগিনিউডেট বা সাসপেন্ডলআউট। আপনি অনেকগুলি নিয়ন্ত্রণ পেয়েছি BackgroundImage এটি একটি করতে পারেন অনেক খারাপ।
এটি ব্যবহারকারী কন্ট্রোল নিজেই রঙ করলে when এটি যেখানে শিশু নিয়ন্ত্রণ উইন্ডোগুলিতে যায় সেখানে ছিদ্র রেখে পটভূমি চিত্রটি আঁকবে। প্রতিটি শিশু নিয়ন্ত্রণ তারপরে নিজের রঙ করার জন্য একটি বার্তা পায়, তারা তাদের উইন্ডো সামগ্রীতে গর্তটি পূর্ণ করবে। যখন আপনার অনেকগুলি নিয়ন্ত্রণ থাকে, তখন সেই গর্তগুলি কিছুক্ষণের জন্য ব্যবহারকারীর কাছে দৃশ্যমান হয়। তারা সাধারণত সাদা, অন্ধকার হলে ব্যাকগ্রাউন্ড আইমেজের সাথে খারাপভাবে বিপরীত হয়। অথবা ফর্মটির অস্বচ্ছতা বা ট্রান্সপারেন্সিকি বৈশিষ্ট্যযুক্ত সেট থাকলে তা কেবল কালো হতে পারে, ঠিক যে কোনও কিছুর সাথে খারাপভাবে বিপরীতে।
এটি উইন্ডোজ ফর্মগুলির একটি দুর্দান্ত মৌলিক সীমাবদ্ধতা, উইন্ডোজ যেভাবে উইন্ডোজকে রেন্ডার করে এটি এটি আটকে রয়েছে। ডাব্লুপিএফ বিটিডব্লিউ দ্বারা স্থির, এটি শিশু নিয়ন্ত্রণের জন্য উইন্ডোজ ব্যবহার করে না। আপনি যা চান তা শিশু নিয়ন্ত্রণগুলি সহ পুরো ফর্মটি ডাবল বাফার করছে। এটি সম্ভব, সমাধানের জন্য এই কোডটিতে আমার কোডটি পরীক্ষা করুন । যদিও এর পার্শ্ব-প্রতিক্রিয়া রয়েছে এবং চিত্রের গতি আসলে বাড়ায় না। কোডটি সহজ, আপনার ফর্মটিতে এটি আটকে দিন (ব্যবহারকারীর নিয়ন্ত্রণ নয়):
protected override CreateParams CreateParams {
get {
CreateParams cp = base.CreateParams;
cp.ExStyle |= 0x02000000; // Turn on WS_EX_COMPOSITED
return cp;
}
}
পেইন্টিংয়ের গতি উন্নত করতে আপনি করতে পারেন এমন অনেকগুলি বিষয়, যে ফ্লিকারটি আর লক্ষণীয় নয়। ব্যাকগ্রাউন্ডআইমেজকে মোকাবেলা করে শুরু করুন। উত্স চিত্রটি বড় হলে এগুলি সত্যই ব্যয়বহুল হতে পারে এবং নিয়ন্ত্রণের সাথে ফিট করার জন্য সঙ্কুচিত হওয়া দরকার। ব্যাকগ্রাউন্ডআইমেজ লেআউট সম্পত্তিটি "টাইল" এ পরিবর্তন করুন। যদি এটি একটি লক্ষণীয় গতি বাড়িয়ে দেয় তবে আপনার চিত্রাঙ্কিত প্রোগ্রামে ফিরে যান এবং আদর্শ নিয়ন্ত্রণের আকারের সাথে আরও ভাল মিলের জন্য চিত্রটিকে পুনরায় আকার দিন। অথবা চিত্রটির সঠিক আকারের মাপের অনুলিপি তৈরি করতে ইউসির অনারাইজ () পদ্ধতিতে কোড লিখুন যাতে প্রতিবারের নিয়ন্ত্রণটি পুনরায় আকার পরিবর্তন করতে না পারে। সেই অনুলিপিটির জন্য ফর্ম্যাট 32 বিপিপিআরজিবি পিক্সেল ফর্ম্যাটটি ব্যবহার করুন, এটি অন্য পিক্সেল বিন্যাসের চেয়ে প্রায় 10 গুণ বেশি রেন্ডার করে।
আপনি পরবর্তী কাজটি করতে পারেন তা হ'ল ছিদ্রগুলিকে এতটা লক্ষণীয় হতে পারে এবং চিত্রের সাথে খারাপভাবে বিপরীত হয়। আপনি ইউসির জন্য ডাব্লুএস_সিএলসিপিএইচএলডিআরএন স্টাইলের পতাকাটি বন্ধ করতে পারেন , এই পতাকাটি যেখানে শিশু নিয়ন্ত্রণে চলে সেই অঞ্চলে ইউসিটিকে চিত্র আঁকাতে বাধা দেয়। ইউজারকন্ট্রোলের কোডটিতে এই কোডটি আটকে দিন:
protected override CreateParams CreateParams {
get {
var parms = base.CreateParams;
parms.Style &= ~0x02000000; // Turn off WS_CLIPCHILDREN
return parms;
}
}
শিশু নিয়ন্ত্রণগুলি এখন তাদের পটভূমি চিত্রের শীর্ষে আঁকবে। আপনি এখনও তাদের একের পর এক চিত্র আঁকতে দেখবেন, তবে কুৎসিত মধ্যবর্তী সাদা বা ব্ল্যাকহোলটি দৃশ্যমান হবে না।
সর্বশেষে তবে অন্তত নয়, ধীরে ধীরে পেইন্টিং সমস্যাগুলি সমাধান করার জন্য শিশু নিয়ন্ত্রণের সংখ্যা হ্রাস করা সর্বদা একটি ভাল পদ্ধতির। ইউসির অনপেইন্ট () ইভেন্টটি ওভাররাইড করুন এবং এখন কোনও সন্তানের মধ্যে যা দেখানো হয়েছে তা আঁকুন। বিশেষ লেবেল এবং পিকচারবক্স খুব অপব্যয়কারী। পয়েন্ট এবং ক্লিকের জন্য সুবিধাজনক তবে তাদের হালকা ওজনের বিকল্প (একটি স্ট্রিং বা একটি চিত্র অঙ্কন) আপনার অনপেন্ট () পদ্ধতিতে কেবলমাত্র একক লাইন কোড গ্রহণ করে।
UpdateStyles
এই সেট করার পরে কল করেছেন ? এটি খারাপভাবে নথিভুক্ত, তবে কখনও কখনও এটি প্রয়োজন হতে পারে।