完成功能:改变图像显示的rgb波段;

1、可改变图像显示波段,当修改完成参数时实时刷新图像;
2、TOC中切换选中的多图层时,刷新渲染信息;
3、界面中保存图像的波长信息,参数修改时的选项就是准确的波长信息;
This commit is contained in:
tangchao0503
2026-03-10 17:21:21 +08:00
parent 0ac03f0eb5
commit 452f7c8e5f
8 changed files with 330 additions and 84 deletions

View File

@ -4,6 +4,7 @@
#include <QNetworkRequest>
#include <QNetworkReply>
#include <QNetworkAccessManager>
#include <vector>
#include "ui_imgControl.h"
@ -28,12 +29,26 @@ Q_SIGNALS:
void bandSelectionChanged(double rWave, double gWave, double bWave);
private Q_SLOTS:
void onSpinRedChanged(double val);
void onSpinGreenChanged(double val);
void onSpinBlueChanged(double val);
void onSliderRedChanged(int val);
void onSliderGreenChanged(int val);
void onSliderBlueChanged(int val);
// Sync slider position while dragging spinbox (no render)
void onSpinRedValueChanged(double val);
void onSpinGreenValueChanged(double val);
void onSpinBlueValueChanged(double val);
// Sync spinbox display while dragging slider (no render)
void onSliderRedValueChanged(int val);
void onSliderGreenValueChanged(int val);
void onSliderBlueValueChanged(int val);
// Commit: spinbox Enter key pressed / focus lost
void onSpinRedEditingFinished();
void onSpinGreenEditingFinished();
void onSpinBlueEditingFinished();
// Commit: slider mouse released
void onSliderRedReleased();
void onSliderGreenReleased();
void onSliderBlueReleased();
void onTrueColorClicked();
void onColorInfraredClicked();
@ -41,8 +56,14 @@ private:
void emitBandChange();
void blockAllSignals(bool block);
// Find the band index whose wavelength is closest to the given value
int nearestBandIndex(double wave) const;
// Set spinbox and slider to wavelength of the given band index
void setControlsToBandIndex(QDoubleSpinBox* spin, QSlider* slider, int idx);
Ui::ImageControl ui;
RasterLayer* m_activeLayer = nullptr;
double m_minWave = 374.5;
double m_maxWave = 948.1;
std::vector<double> m_wavelengths; // band wavelengths from header
};