У меня есть панель в верхней части формы с небольшим TMemo, настроенным как цель перетаскивания для URL-адресов. Ниже у меня есть элемент управления страницей с 2 вкладками. Я установил TWebBrowser на одной вкладке и еще кое-что на второй вкладке. В TWebBrowser мне нужно войти на имеющийся у нас сайт по продаже билетов об ошибках, а затем просмотреть билеты. В некоторых билетах есть ссылки на небольшие изображения, которые клиенты хотят, чтобы мы использовали (подумайте что-то вроде логотипов). Я могу щелкнуть по ним левой кнопкой мыши, а затем перетащить ссылку из TWebBrowser в TMemo вверху формы. Это подбирает URL-адрес и заголовок изображения, как и ожидалось.
Связанное событие OnDrop также переключается на вторую вкладку, где я нажимаю кнопку «Обработка». Это заставляет браузер переходить к изображению (через Navigate2), которое он загружает в окно браузера. Это изображение - все, что находится в окне браузера на данный момент.
Итак, теперь мне нужен код, чтобы захватить изображение и загрузить его в TImage на второй вкладке. FWIW, исходное изображение - PNG.
Я могу получить высоту и ширину изображения из целевого изображения, но большую часть времени я не получаю само изображение, чтобы оно отображалось в TImage. Иногда, но в основном нет. Я могу без проблем загружать PNG в эти объекты изображения, поэтому я знаю, что PNG правильно отображает.
(Возможно, есть способ загрузить изображение напрямую, но мне не удалось заставить его работать. TWebBrowser используется для входа во внутреннюю систему сообщений об ошибках, где предоставляются изображения, и я могу получить доступ к этому сайту только если он находится в той же форме, и я вошел в систему. В противном случае DL загружает страницу входа в HTML вместо изображения. Если есть способ сделать это в текущей структуре, я открыт для предложений.)
Я нахожу файл изображения на веб-странице с помощью IHTMLElement2.getelementsByTagName ('img') и беру первый (поскольку я знаю, что это все, что есть на веб-странице).
img := getFirstImage;
Image1_frame.Height := img.height+2;
Image1_frame.Width := img.width+2;
rnd := img as IHTMLElementRender ;
rnd.DrawToDC(Image1.Canvas.Handle);
Изображение1 выровнено с клиентом на панели с именем Image1_frame. Итак, я установил H & W рамы - они настроены нормально.
Но изображения обычно не видно. Он просто белый.
Я вижу, что DrawToDC устарел, но я не нашел, чем его заменить.