জিইউআই ফ্রেমওয়ার্কগুলিতে সাধারণত কিছু ধরণের 'ভিউ' শ্রেণি থাকে যা স্ক্রিনে আঁকা জিনিসগুলিকে উপস্থাপন করে এবং সেই শ্রেণিটি সাধারণত invalidateRect(Rect r)
তার আঁকার ক্ষেত্রের অংশটিকে পুনরায় চিত্রিত করার প্রয়োজন হিসাবে চিহ্নিত করার মতো একটি পদ্ধতি সরবরাহ করে । ক্লায়েন্টরা ভিউটির অংশে একটি আপডেটের জন্য অনুরোধ করতে সেই পদ্ধতিটিকে কল করতে পারে। তবে একটি দৃশ্য তার নিজস্ব পদ্ধতিটিকেও ডাকে, যেমন:
invalidateRect(m_frame);
পুরো অঞ্চল পুনরায় আঁকার কারণ। উদাহরণস্বরূপ, এটি যখন ভিউ হায়ারার্কিতে প্রথম যুক্ত হয় তখন এটি এটি করতে পারে।
এটি করার ক্ষেত্রে কোনও অসুবিধা নেই - দর্শনটির ফ্রেমটি একটি বৈধ আয়তক্ষেত্র এবং দৃশ্যটি নিজেই জানে যে এটি নিজেই আবার আঁকতে চায়। ভিউ ক্লাসটি একটি পৃথক পদ্ধতি সরবরাহ করতে পারে যা কোনও পরামিতি নেয় না এবং পরিবর্তে দর্শনটির ফ্রেম ব্যবহার করে:
invalidateFrame();
আপনি যখন আরও সাধারণ ব্যবহার করতে পারেন তবে কেন এই জন্য একটি বিশেষ পদ্ধতি যুক্ত করবেন invalidateRect()
? বা, আপনি যদি সরবরাহ করা বেছে নিয়ে থাকেন তবে আপনি invalidateFrame()
সম্ভবত এটি আরও সাধারণ হিসাবে প্রয়োগ করতে পারেন invalidateRect()
:
View::invalidateFrame(void)
{
invalidateRect(m_frame)
}
আপনার যদি এর মধ্যে ইতিমধ্যে অ্যাক্সেস থাকে তবে কেন পদ্ধতি প্যারামিটার হিসাবে ভেরিয়েবল পাস করবেন?
আপনি উচিত আপনার নিজের পদ্ধতি প্যারামিটার হিসাবে উদাহরণস্বরূপ ভেরিয়েবল পাস যদি পদ্ধতি যা উদাহরণস্বরূপ পরিবর্তনশীল উপর বিশেষভাবে কাজ করে না। উপরের উদাহরণে, ভিউটির ফ্রেমটি যতটা invalidateRect()
পদ্ধতি সম্পর্কিত তেমনই অন্য একটি আয়তক্ষেত্র ।