Create a bitmap and drawing in it?
-
THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED
On 30/04/2012 at 08:26, xxxxxxxx wrote:
It won't let me do this: bmp = gcm- >GetBitmap(); //error: cannot access private member AutoAlloc()
-ScottA
-
THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED
On 30/04/2012 at 08:40, xxxxxxxx wrote:
Originally posted by xxxxxxxx
It won't let me do this: bmp = gcm- >GetBitmap(); //error: cannot access private member AutoAlloc()
Sorry, this is because bmp was already allocated with AutoAlloc(). We have to declare a new BaseBitmap variable to hold the modified bitmap:
BaseBitmap *clipBmp = gcm->GetBitmap();
-
THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED
On 30/04/2012 at 09:16, xxxxxxxx wrote:
Sorry about that. I should have mentioned that I already tried assigning it to a new BaseBitmap variable like that.
The code you posted still produces a rectangle full of lines. And not the correct color for the FillRect().
An interesting thing to note is I got this same type of bad result when using SetPixelCnt() with the wrong buffer settings.-ScottA
-
THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED
On 30/04/2012 at 09:34, xxxxxxxx wrote:
Here is the code that works for me:
Filename fn = GeGetC4DPath(C4D_PATH_DESKTOP)+"myimage.jpg"; //Get the path to an image AutoAlloc<GeClipMap> gcm; //Create an instance of the GeClipMap class gcm->Init(fn,0,0); //Initialise it using the image in our path gcm->BeginDraw(); gcm->SetColor(255L,255L,255L); //Set the color to white gcm->FillRect(50L,50L,100L,100L); //Create a filled rectangle area gcm->EndDraw(); ShowBitmap(gcm->GetBitmap()); //Show the drawn bitmap
-
THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED
On 30/04/2012 at 10:05, xxxxxxxx wrote:
Now you've got it.
Here's my little addition to it that will also save the image as well as show it in the picture viewer:
Filename fn = GeGetC4DPath(C4D_PATH_DESKTOP)+"myimage.jpg"; //Get the path to an image AutoAlloc<GeClipMap> gcm; //Create an instance of the GeClipMap class gcm->Init(fn,0,0); //Initialise it using the image in our path gcm->BeginDraw(); gcm->SetColor(255L,255L,255L); //Set the color to white gcm->FillRect(50L,50L,100L,100L); //Create a filled rectangle area gcm->EndDraw(); ShowBitmap(gcm->GetBitmap()); //Show the drawn bitmap in the picture viewer BaseBitmap *clipBmp = gcm->GetBitmap(); //Get the modified bitmap from GeClipMap Filename newfn = GeGetC4DPath(C4D_PATH_DESKTOP)+"newimage.jpg"; //Create a path to save our new image clipBmp->Save(Filename(newfn),FILTER_JPG,NULL,SAVEBIT_0); //Save the new image
Please don't kill me.
But could you possibly show me how to write the PolyLine code?
It requires a GE_POINT2D struct pointer. And I can't figure out how to write that part.-ScottA
-
THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED
On 30/04/2012 at 12:20, xxxxxxxx wrote:
I've tried a whole bunch of different things. But I just can't get the struct to work.
Example#1
GE_POINT2D *points; //<--Error. Variable is not initialized!! //Setting it to NULL doesn't work LONG x = points->x = 5; LONG y = points->y = 25; gcm->PolyLine(20, points);
Example#2
Accessing the struct directly without pointers crashes C4DGE_POINT2D points; LONG x = points.x = 5; LONG y = points.y = 25; gcm->PolyLine(20, &points);
Can anyone tell me how to do this?
I've got all the parts and pieces. But I just can't make C4D happy.-ScottA
-
THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED
On 30/04/2012 at 15:04, xxxxxxxx wrote:
Hi,
You have to initialize an array of struct (GE_POINT2D in this case) :
GE_POINT2D points[] = //Define an array of GE_POINT2D { {200L,200L}, //x = 200L, y = 200L {250L,250L}, //etc. {200L,300L} }; gcm->PolyLine(3, points); //Draw the polyline with the given 3 points
This is a bit tricky at the beginning .
-
THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED
On 30/04/2012 at 15:34, xxxxxxxx wrote:
Wonderful.
I think I've got everything I need now.
If not... too bad. Because I've bothered you enough about this.Thanks a lot.
You've really helped me (and probably many others) out a great deal with this.-ScottA