የመስኮቱን ከፊል-ግልፅነት እንዴት ማድረግ እንደሚቻል

ዝርዝር ሁኔታ:

የመስኮቱን ከፊል-ግልፅነት እንዴት ማድረግ እንደሚቻል
የመስኮቱን ከፊል-ግልፅነት እንዴት ማድረግ እንደሚቻል

ቪዲዮ: የመስኮቱን ከፊል-ግልፅነት እንዴት ማድረግ እንደሚቻል

ቪዲዮ: የመስኮቱን ከፊል-ግልፅነት እንዴት ማድረግ እንደሚቻል
ቪዲዮ: Как принять квартиру у застройщика? Ремонт в НОВОСТРОЙКЕ от А до Я. #1 2024, ግንቦት
Anonim

በግራፊክ ማሳያ ቴክኖሎጂዎች መሻሻል ፣ የስርዓተ ክወናዎች ኤ.ፒ.አይ.ም እንዲሁ ተሻሽሏል ፣ መደበኛ ያልሆኑ በይነገጽ አባሎችን ለማዳበር ለፕሮግራም አውጪዎች ብዙ እና ብዙ ዕድሎችን ይሰጣል። ስለዚህ ከዊንዶውስ 2000 ኦፐሬቲንግ ሲስተም ፈጠራዎች አንዱ የተደረደሩ መስኮቶች ነበሩ ፣ የእነዚያ ክፍሎች ግልጽ ሊሆኑ ይችላሉ ፡፡ ብዙም ሳይቆይ ፣ ከተደረደሩ መስኮቶች ጋር ለመስራት የኤ.ፒ.አይ. መግለጫ በ MSDN ላይ ተገኘ ፡፡ ሆኖም በፕሮግራም አውጪዎች መድረኮች ላይ የመስኮት ከፊል-ግልፅነት እንዴት እንደሚሰራ ጥያቄዎች አሁንም እየተጠየቁ ናቸው ፡፡

አንድን መስኮት በከፊል-ግልጽነት እንዴት ማድረግ እንደሚቻል
አንድን መስኮት በከፊል-ግልጽነት እንዴት ማድረግ እንደሚቻል

አስፈላጊ

  • - አጠናቃሪ;
  • - windows sdk ወይም ማዕቀፍ ለዊንዶውስ ፕሮግራም ፡፡

መመሪያዎች

ደረጃ 1

ከፊል-ግልፅ ለማድረግ ወደሚፈልጉት መስኮት አንድ እጀታ ያግኙ ፡፡ መስኮት ይፈልጉ ወይም ይፍጠሩ። እሱን ለመፍጠር ፣ የ “CreateWindow” ፣ “CreateWindowEx” ኤፒአይ ተግባራትን ወይም በእነዚህ የተጠቀሙባቸው ማዕቀፍ ክፍሎች ውስጥ ባሉ በእነዚህ ተግባራት ዙሪያ መጠቅለያ ዘዴዎችን ይጠቀሙ ፡፡ ለፈጠራ ዊንዶውስ ተግባር ምሳሌው ይህን ይመስላል

HWND ፍጠር ዊንዶውስ (LPCTSTR lpClassName ፣

LPCTSTR lpWindowName ፣

DWORD dwStyle ፣

int x, int y, int nWidth ፣

int n ቁመት ፣

HWND hWndParent, HMENU hMenu, HINSTANCE h ኢንሴንስ ፣

LPVOID lpParam);

እንደሚመለከቱት ተግባሩ እንደ አፈፃፀም ውጤት እጀታውን ወደ ተሰራው መስኮት ይመልሳል ፡፡ ማንኛውም የጥቅል ክፍል ጥቅም ላይ ከዋለ መያዣውን ለማግኘት ከተፈጠረው መስኮት ጋር በሚዛመደው ነገር ላይ የእሱን ዘዴዎች ይጠቀሙ ፡፡

ደረጃ 2

መስኮት መፈለግ የኤፒአይ ጥሪዎችን በመጠቀም FindWindow ፣ FindWindowEx ፣ EnumWindows ፣ EnumChildWindows ፣ EnumThreadWindows እና ጥምረቶቻቸውን በመጠቀም ሊከናወን ይችላል። የ WindowFromPoint እና ChildWindowFromPoint ተግባራትን በመጠቀም በአንድ የተወሰነ ክልል ውስጥ ወደ አንድ መስኮት አንድ እጀታ ማግኘት ይችላሉ ፡፡

ደረጃ 3

መስኮቱን ለተራዘመው ቅጥ WS_EX_LAYERED ያቀናብሩ። የ SetWindowLong ኤ.ፒ.አይ. ወይም የጥቅል ዕቃዎች ተጓዳኝ ዘዴዎችን ይጠቀሙ። የ SetWindowLong ተግባር ሊለወጥ የሚችል የመስኮት መለኪያ መረጃን ሙሉ በሙሉ ይተካዋል ፣ ስለሆነም ለቅጥ ባንዲራዎች ስብስብ የቀደመውን እሴት ለማግኘት ከ GetWindowLong ተግባር ጋር በማጣመር ይጠቀሙበት። ለምሳሌ ፣ ዘይቤው እንደዚህ ሊለወጥ ይችላል-

:: SetWindowLong (hWnd, GWL_EXSTYLE,:: GetWindowLong (hWnd, GWL_EXSTYLE));

በቀዳሚው ደረጃ ላይ የተገለጹትን ድርጊቶች በመፈፀም እዚህ የ hWnd የመስኮት እጀታ ይገኛል ፡፡

ደረጃ 4

መስኮቱን በከፊል-ግልፅ ያድርጉት። የ “SetLayeredWindowAttributes” ኤፒአይ ወይም የጥቅል ክፍሎች ዘዴዎችን ይጠቀሙ። የ “SetLayeredWindowAttributes” ተግባር የመጀመሪያ ንድፍ ይህን ይመስላል

BOOL SetLayredWindowAttributes (HWND hwnd ፣

ኮሎሬፍ ክሬይ ፣

ባይት አልፋ ፣

DWORD dwFlags);

ደረጃ 5

የተግባሩ የ hwnd ግቤት በመጀመሪያ ደረጃ የተገኘ ትክክለኛ የመስኮት እጀታ መሆን አለበት። ክሪኬይ መለኪያው በከፊል ግልጽነት ያላቸውን አካባቢዎች ለመለየት የሚያገለግል የቀለም ቁልፍ ነው ፡፡ የ “አልፋ” ልኬት የልዩነት እሴትን ይገልጻል። ከ 0 ጋር እኩል በሆነ የ ‹አልፋ› ግቤት እሴት ፣ “ከፊል-ግልፅነት” ያላቸው አካባቢዎች ሙሉ በሙሉ ግልጽ ይሆናሉ። የባልፋ ልኬት 255 ከሆነ እነሱ ሙሉ በሙሉ ግልጽ ያልሆኑ ይሆናሉ። የ dwFlags መለኪያ የመስኮቱን ይዘቶች ተጨማሪ የማሳያ ሁነታን ይወስናል። የ LWA_COLORKEY ባንዲራ በ dwFlags እሴቱ ውስጥ ሲካተት ፣ የመስኮቱ አንጸባራቂ አካባቢዎች በቀለሙ ቁልፍ መሠረት ይወሰናሉ። የ LWA_ALPHA ባንዲራ ሲነቃ የ “አልፋ” ልኬት የትርጓሜ እሴትን ለመለየት ጥቅም ላይ ይውላል።

ደረጃ 6

አጠቃላይ መስኮቱን ከፊል-ግልፅ ለማድረግ SetLayeredWindowAttribites ን በተመረጠው የ ‹አልፋ› መለኪያ እሴት ፣ በ LWA_ALPHA ባንዲራ ይደውሉ ፣ ግን የ LWA_COLORKEY ባንዲራ የላቸውም ፡፡ የተገኘውን የመስኮት እጀታ እንደ ተግባሩ የመጀመሪያ መለኪያ ይጠቀሙ ፡፡ ለምሳሌ ፣ የመስኮቱን ግማሽ ግልፅ ለማድረግ ጥሪውን ይጠቀሙ:

:: SetLayeredWindowAttributes (hWnd, RGB (0, 0, 0), 128, LWA_ALPHA);

የሚመከር: