Let's say I have an image in a CBitmap with a color that signifies a transparent pixel (in my case it's magenta). Can I create a HRGN or a CRgn for the image that includes all the pixels except the magenta ones?
Can I create a HRGN/CRgn by excluding all the magenta pixels in a given image?
703 views Asked by sashoalm At
2
There are 2 answers
0
Roger Lipscombe
On
At its simplest, you need to call CreateRectRgn multiple times, passing a single-pixel rectangle for each magenta pixel. You'd then combine these regions together using CombineRgn.
Obvious optimisations include:
- using a DIB section, rather than
GetPixelto scan the original image. - looking for single-row runs of the same pixel, so that you're not combining 1 x 1 regions.
- looking for multi-row blocks of the same pixel, so that you're not combining 1 x n regions.
That said: why do you need an HRGN? Could you get away with just transforming the original bitmap into a mask bitmap?
Related Questions in C++
- How to immediately apply DISPLAYCONFIG_SCALING display scaling mode with SetDisplayConfig and DISPLAYCONFIG_PATH_TARGET_INFO
- Why can't I use templates members in its specialization?
- How to fix "Access violation executing location" when using GLFW and GLAD
- Dynamic array of structures in C++/ cannot fill a dynamic array of doubles in structure from dynamic array of structures
- How do I apply the interface concept with the base-class in design?
- File refuses to compile std::erase() even if using -std=g++23
- How can I do a successful map when the number of elements to be mapped is not consistent in Thrust C++
- Can std::bit_cast be applied to an empty object?
- Unexpected inter-thread happens-before relationships from relaxed memory ordering
- How i can move element of dynamic vector in argument of function push_back for dynamic vector
- Brick Breaker Ball Bounce
- Thread-safe lock-free min where both operands can change c++
- Watchdog Timer Reset on ESP32 using Webservers
- How to solve compiler error: no matching function for call to 'dmhFS::dmhFS()' in my case?
- Conda CMAKE CXX Compiler error while compiling Pytorch
Related Questions in WINAPI
- How to immediately apply DISPLAYCONFIG_SCALING display scaling mode with SetDisplayConfig and DISPLAYCONFIG_PATH_TARGET_INFO
- Changing the theme of a #32768 (menu) window class at runtime
- Issue with GetOpenFileName while debugging
- How to populate a ListBox with SendMessage?
- Is there a function to end a child process?
- HDR video publishing
- Frameless Qt + WinAPI maximized window size is bigger than the availableGeometry()
- Mount .iso file with python
- What is Win32 x86-64 CONTEXT::VectorRegister for?
- WinAPI - right mouse drag & drop and IContextMenu
- Win32 per-filesystem cache tuning?
- Client connection timeout during Android & Windows PC communication via sockets
- MessageBoxEx sometimes shows as hollow window, border only, and only on Windows 11
- Win32api send message and Pydirectinput and Powertoy (Keyboard Manager ) Not working when open the application
- Would it be possible to run an application right after csrss.exe loads? (Windows)
Related Questions in MFC
- Unable to add request headers via CHttpFile - C++/MFC
- Is there a worked example of using CStrBufT with a CString?
- UI Interface Crashes and Hanging Issues in MFC Application
- getting a Win32 console app to work with MFC
- How to create borderless CFrameWnd for SDI application
- How to get real lines count of CEdit control
- MFC Dynamic Layout - Show/Hide Control and adjust other controls out of the way?
- Combobox items not showing when Windows DPI changed
- Printing strings using MFC Edit Control is very slow
- How can an MFC VC++ application execute multiple functions within a single function without hanging or displaying a 'Not Responding' message?
- How to enable scrollbar in a specific group member added
- Resetting dynamic layout controls
- How to set a new height (or width) to a CRect?
- Drawing my own embedded button with CMFCPropertyGridProperty and detecting the button state
- Relative path issue when running programs with Task Scheduler
Related Questions in TRANSPARENT
- Making transparent borderless windows with minimize and maximize animations
- Semi-transparent background of toolbar and statusbar
- Transparent Button Background with Gradient Text and Border Effect - Hover Problem
- Error: missing arguemnt: types/values length mismatch (count=0, expectedCount=1, code=MISSING_ARGUMENT, version=6.11.1)
- Android: TextView transparent png as background resource not working
- Java swing problem transparent animation gif
- Fragment upon fragment
- How to group select images
- How to create transparent waveform in python
- Make a color in a video transparent
- Electron: Refreshing Issue with Show Method in Transparent Frameless Window
- How to make MouseTransparent Stage in JavaFX
- Win32Gui + Tkinter(Clickthrough Overlay, Transparent Background)
- WS_EX_TRANSPARENT can't click on Windows 11 taskbar
- How do I add transparent Pixels without just doing white pixels?
Related Questions in REGIONS
- VSTS multiple regions
- Hbase: data are not splitted into regions following key naming rules
- Why can't a new-added HBase region server get regions assigned to?
- Deploying AWS Lambda to multiple regions?
- CosmosDB How to read replicated data
- How to save an image from ds9 as a region file to use it some other time?
- Adding clickable boxes inside picturebox c#
- Regional API Gateway with CloudFront
- Prism Regions do not get created when RegionNames are binded
- System architect courses for mainframes
- Hazelcast data isolation ("Memory Regions")
- Does Firebase's lack of region support have a significant impact on app performance?
- Is there a way to configure GCP regions in Firebase?
- JSDoc - how to document region of code
- How to discard non-rectangular closed regions in image in MATLAB?
Popular Questions
- How do I undo the most recent local commits in Git?
- How can I remove a specific item from an array in JavaScript?
- How do I delete a Git branch locally and remotely?
- Find all files containing a specific text (string) on Linux?
- How do I revert a Git repository to a previous commit?
- How do I create an HTML button that acts like a link?
- How do I check out a remote Git branch?
- How do I force "git pull" to overwrite local files?
- How do I list all files of a directory?
- How to check whether a string contains a substring in JavaScript?
- How do I redirect to another webpage?
- How can I iterate over rows in a Pandas DataFrame?
- How do I convert a String to an int in Java?
- Does Python have a string 'contains' substring method?
- How do I check if a string contains a specific word?
Trending Questions
- UIImageView Frame Doesn't Reflect Constraints
- Is it possible to use adb commands to click on a view by finding its ID?
- How to create a new web character symbol recognizable by html/javascript?
- Why isn't my CSS3 animation smooth in Google Chrome (but very smooth on other browsers)?
- Heap Gives Page Fault
- Connect ffmpeg to Visual Studio 2008
- Both Object- and ValueAnimator jumps when Duration is set above API LvL 24
- How to avoid default initialization of objects in std::vector?
- second argument of the command line arguments in a format other than char** argv or char* argv[]
- How to improve efficiency of algorithm which generates next lexicographic permutation?
- Navigating to the another actvity app getting crash in android
- How to read the particular message format in android and store in sqlite database?
- Resetting inventory status after order is cancelled
- Efficiently compute powers of X in SSE/AVX
- Insert into an external database using ajax and php : POST 500 (Internal Server Error)
The only way to do this is to scan over the image, row at a time, scanning pixels and keep on combining pixel ranges into a HRGN object.
You will want to do this with a DIBSection as calling GetPixel is rather slow.