Improve company productivity with a Business Account.Sign Up

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 1275
  • Last Modified:

Using ExtCreateRegion

Hi.
I'm looking for simple example using ExtCreateRegion.
I don't know how to parse the rectangles to this functions.
3 rectangles will be enough to demonstrate this problem.
Thanx!
0
Aleq
Asked:
Aleq
  • 2
1 Solution
 
ronit051397Commented:
Hi Aleq, I post this article from Borland's groups as an answer:
"...Here is some sample code (it is not optimized):

                        FRegion:=CreateRectRgn(0,0, 0,0);
                        try
                          for i:=0 to FBitmap.Height-1 do
                            begin
                              for j:=R.Left to R.Right-1 do
                                begin
                                  C:=FBitmap.Canvas.Pixels[j,i];
                                  if C<>TransColor then
                                    begin
                                      Rgn1:=CreateRectRgn(j-R.Left,i,succ(j-R.Left),succ(i));
                                      Rgn2:=CopyRgn(FRegion);
                                      CombineRgn(FRegion,Rgn2,Rgn1,RGN_OR);
                                      DeleteObject(Rgn1);
                                      DeleteObject(Rgn2)
                                    end
                                end
                            end
                        except
                          DeleteObject(FRegion);
                          FRegion:=0
                        end

                  Here is CopyRgn function:

                  function CopyRgn(Rgn:hRgn):hRgn;
                  var RData:PRgnData;
                         sz:integer;
                  begin
                    Result:=0;
                    if Rgn=0 then exit;
                    sz:=GetRegionData(Rgn,0,nil);
                    if sz=0 then exit;
                    GetMem(RData,sz);
                    try
                      GetRegionData(Rgn,sz,RData);
                      Result:=ExtCreateRegion(nil,sz,RData^);
                    finally
                      FreeMem(RData)
                    end;
                  end;
."
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

Join & Write a Comment

Featured Post

Free Tool: Port Scanner

Check which ports are open to the outside world. Helps make sure that your firewall rules are working as intended.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

  • 2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now