如何使图片拉伸以适应CppWebBrowser窗口的大小?
CppWebBrowser1.Navigate( "http://**"),图片会按照原始大小显示,如果图片很大,不能看到图片全貌。只能拖动滚动条查看。请问如何使图片拉伸以适应CPPWebBrowser1的尺寸。
[解决办法]
在CppWebBrowser的OnDocumentComplete事件中加入以下代码:
#include <mshtml.h>void __fastcall TForm1::CppWebBrowser1DocumentComplete(TObject *Sender, LPDISPATCH pDisp, Variant *URL){ TCppWebBrowser *cwb = dynamic_cast<TCppWebBrowser *>(Sender); if (!cwb) return; IHTMLDocument *spDoc = NULL; HRESULT hr = cwb->Document->QueryInterface( ::IID_IHTMLDocument2, (void **)&spDoc); if (FAILED(hr)) return; IDispatch *p = NULL; hr = spDoc->QueryInterface(IID_IDispatch, (void **)&p); if(FAILED(hr)) { spDoc->Release(); return; } Variant vObj = Variant(p); int nCount = vObj.OlePropertyGet("Images").OlePropertyGet("Length"); int nWidth, nHeight; // 遍历页面中的所有图片 for (int i = 0; i < nCount; i++) { // 获取图片的宽度 nWidth = vObj.OlePropertyGet("Images") .OleFunction("Item", i).OlePropertyGet("Width"); // 获取图片的高度 nHeight = vObj.OlePropertyGet("Images") .OleFunction("Item", i).OlePropertyGet("Height"); // 如果当前图片的宽度大于WebBrowser的宽度,则适当调整图片的宽度 if (nWidth > cwb->Width) vObj.OlePropertyGet("Images") .OleFunction("Item", i).OlePropertySet("Width", cwb->Width - 50); // 如果当前图片的高度大于WebBrowser的高度,则适当调整图片的高度 if (nHeight > cwb->Height) vObj.OlePropertyGet("Images") .OleFunction("Item", i).OlePropertySet("Height", cwb->Height - 50); } p->Release(); spDoc->Release();}