Announcement

Collapse
No announcement yet.

C++Builder2010 -Direct2D - transparent Images

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • C++Builder2010 -Direct2D - transparent Images

    Hallo,

    kann mir jemand weiterhelfen wie man in DIrect2D beim C++Builder2010 die Bilder Transparent zeichnet?

    #include <Direct2D.hpp>

    void TForm1::Test()
    {
    FBitmap = new Graphics::TBitmap();
    FBitmap->LoadFromFile(ExtractFilePath(Application->ExeName)+"test.bmp");
    FBitmap->Transparent = true;
    FBitmap->TransparentColor = RGB(0,255,0); // clLime
    FBitmap->TransparentMode = tmFixed; // tmAuto
    // FBitmap->Mask( RGB(0,255,0) );

    if( !TDirect2DCanvas::Supported() )
    {
    ShowMessage("not supported! Only Windows 7 or Vista SP2");
    exit (EXIT_FAILURE);
    }

    try
    {
    FD2DCanvas = new TDirect2DCanvas(Handle);

    FD2DCanvas->RenderTarget->SetAntialiasMode(D2D1_ANTIALIAS_MODE_FORCE_DWORD) ;

    //_di_ID2D1Bitmap bmp = FD2DCanvas->CreateBitmap(FBitmap);
    }
    catch(...)
    {
    delete FD2DCanvas;
    FD2DCanvas = NULL;

    MessageDlg("Direct2D can not be started.\n\nApplication will be closed", mtError, TMsgDlgButtons() << mbOK, 0);
    exit (EXIT_FAILURE);
    }
    }


    void __fastcall TForm1::Paint(void)
    {
    if (!FD2DCanvas)
    return;

    FD2DCanvas->BeginDraw();
    //FD2DCanvas->Brush->Bitmap = FBitmap;
    FD2DCanvas->Brush->Color = clBlack;
    FD2DCanvas->FillRect(TRect(0,0,Width,Height));
    FD2DCanvas->Pen->Color = clRed;
    FD2DCanvas->Pen->Width = 3;
    FD2DCanvas->MoveTo(0, 0);
    FD2DCanvas->LineTo(ClientWidth, ClientHeight);
    FD2DCanvas->MoveTo(0, ClientHeight);
    FD2DCanvas->LineTo(ClientWidth, 0);

    // FD2DCanvas->
    FD2DCanvas->Draw(20,20,FBitmap);

    FD2DCanvas->EndDraw();
    }

  • #2
    Wie cool ist denn das? Ich wollte gerade anfangen mich mit DirectShow rumzuärgern!
    Dankeschön!

    Ich hab mich natürlich noch nicht eingelesen, aber schau mal hier:

    extern PACKAGE D3DCOLORVALUE __fastcall D2D1ColorF(const Graphics::TColor AColor)/* overload */;
    Mit D2D1ColorF erstellen Sie eine Direct2D-kompatible Farbe. D2D1ColorF akzeptiert ein TColor-Argument, das die als Basis für die Direct2D-Farbe zu verwendende GDI-Farbe angibt. Mit einem optionalen Alpha-Parameter können die Alphakanalinformationen festgelegt werden.
    Eventuell ist der Alphakanal = Alphablending?

    PS: Die Hilfe ist im C++Builder echt erbärmlich... was ist RenderTarget?
    Zuletzt editiert von bodo2407; 14.07.2011, 20:12. Reason: PS eingefügt

    Comment

    Working...
    X